Looks  a good idea.In order to take advantage of async IO, it'd be nice
having a concept of chunking for large objects and "pipelining" in the
sense of starting the serialization/deserelezation while reading/writing
the chunks. In some application, it can be very useful when dealing with
large objects for instance with timeseries it'd be possible starting a
partial computation on the first semantically complete chunk, while chunks
are retievied by IO subsystem.

--Pino

On Thu, Jun 16, 2016 at 3:36 AM Wes McKinney <wesmck...@gmail.com> wrote:

> Hi folks,
>
> I put some more thought into the "IO problem" as it relates Arrow in
> C++ (and transitively, Python) and wrote a short Google document with
> my thoughts on it:
>
>
> https://docs.google.com/document/d/16y-eyIgSVL8m5Q7Mmh-jIDRwlh-r0bYatYuDl4sbMIk/edit#
>
> Feedback greatly appreciated! This will be on my critical path in the
> near future, so I would like to know if I'm approaching the problem
> right, and we are in alignment (then can break things down into a
> bunch of JIRAs).
>
> (I can also post this doc directly to the mailing list, I thought the
> initial discussion would be simpler in a GDoc)
>
> Thank you
> Wes
>
> On Wed, Jun 8, 2016 at 4:11 PM, Wes McKinney <wesmck...@gmail.com> wrote:
> > On Fri, Jun 3, 2016 at 10:16 AM, Micah Kornfield <emkornfi...@gmail.com>
> wrote:
> >> Hi Wes,
> >>
> >> At what level do you imagine, the "opt-in" happening.  Right now it
> >> seems like it would be fairly straightforward at build time.  However,
> >> when we start packaging pyarrow for distribution how do you imagine it
> >> will work? (If [1] already answers this, please let me know, I've been
> >> meaning to take a look at it).
> >>
> >
> > Where packaging and distribution is concerned, it'd be easiest to
> > provide non-picky users with a kitchen sink build, but otherwise
> > developers could create precisely the build they want with CMake
> > flags, I guess. If certain libraries aren't found then we wouldn't
> > fail the build by default, for example.
> >
> >> I need to grok the python code base a little bit more to understand
> >> the implications of the scope creep and the pain around taking a more
> >> fine-grained component approach.  But in general my experience has
> >> been that packaging things together while maintaining clear internal
> >> code boundaries for later separation is a good pragmatic approach.
> >>
> >
> > I'd propose creating an `arrow_io` leaf shared library where we can
> > create a small IO subsystem for reuse amongst different data
> > connectors. We can leave things fairly coarse grained for the time
> > being and break things up later if it becomes onerous for other Arrow
> > developer-users.
> >
> >> As a side note, hopefully, we'll be able to re-use some existing
> >> projects to do the heavy lifting for blob store integration.  SFrame
> >> is one option [2] and [3] might be worth investigating as well (both
> >> appear to be Apache 2.0 licensed).
> >
> > While requiring Java + $HADOOP_HOME for HDFS connectivity (wrapper
> > around libhdfs) doesn't excite me that much, the prospect of bugs (or
> > secure cluster issues) creeping up from a 3rd-party HDFS client
> > without the ability to escalate problems to the Apache Hadoop team
> > worries me even more. There is a new official C++ HDFS client in the
> > works after the libhdfs3 patch was not accepted
> > (https://issues.apache.org/jira/browse/HDFS-8707), so this may be
> > worth pursuing once it matures.
> >
> > Thoughts on this welcome.
> >
> > - Wes
> >
> >>
> >> Thanks,
> >> -Micah
> >>
> >> [1] https://github.com/apache/arrow/pull/79/files
> >> [2]
> https://github.com/apache/incubator-hawq/tree/master/depends/libhdfs3
> >> [3] https://github.com/aws/aws-sdk-cpp
> >>
> >>
>

Reply via email to