> > If the current gRPC stub definitions are reasonably stable (in your > opinion), I might try implementing support.
I would guess that is relatively stable, but I don't think I can make any guarantees (as far as I know there are no guarantees made between beta and GA API versions). So while I would love to see this done, it might pay to wait for GA to get some level of stability guarantees. On Mon, Jul 29, 2019 at 6:06 AM David Li <li.david...@gmail.com> wrote: > Hey Micah, > > There hasn't really been formal discussions of Flight "backends", but > there has been some talk about supporting protocols besides gRPC > (which is why the implementation tries to abstract away from gRPC). So > it might be interesting to treat this as another "protocol" in Flight > clients that can only read from BigQuery. > > If the current gRPC stub definitions are reasonably stable (in your > opinion), I might try implementing support. That might get reasonable > performance still, especially in Python (where I've found that a lot > of performance is lost copying messages into/out of CPython to work > with Protobuf & gRPC - presumably grpc-c++ wouldn't do that and/or we > could do the read optimizations ourselves). > > Best, > David > > On 7/27/19, Micah Kornfield <emkornfi...@gmail.com> wrote: > > Hi David, > > > >> I see the original thread mentioned Flight support, do you think it'd > >> be possible to support Flight natively? Or conversely, maybe this > >> could be a candidate for a new Flight "backend" as has been discussed. > > > > Right now our main priority is addressing the caveats I mentioned above. > > After that I would like to see if we can get some of the client side > > optimizations Flight uses either into gRPC directly or perhaps > specialized > > clients. Given my current backlog, I don't think these will happen > anytime > > soon. > > > > In my opinion (this is really above my pay-grade) native flight support > > probably hinges on two things: > > 1. Customer demand for it. > > 2. The Flight APIs would likely need to conform to the Cloud API design > > guidelines [1]. I haven't looked closely enough to see if there are any > > incompatibilities between the two. > > > > I don't recall seeing the discussion on "new flight backends", could you > > provide a pointer? This might be a shorter path for support. I'd also > > like to make an adapter for the C++ Datasets API, but again, given my > > current backlog it will take a while for this to happen. > > > > Thanks, > > Micah > > > > [1] https://cloud.google.com/apis/design/ > > > > On Sat, Jul 27, 2019 at 6:17 AM David Li <li.david...@gmail.com> wrote: > > > >> This is super awesome, thanks for sharing! > >> > >> I see the original thread mentioned Flight support, do you think it'd > >> be possible to support Flight natively? Or conversely, maybe this > >> could be a candidate for a new Flight "backend" as has been discussed. > >> > >> Best, > >> David > >> > >> On 7/26/19, Micah Kornfield <emkornfi...@gmail.com> wrote: > >> > Hi Arrow Dev, > >> > As a follow-up to an old thread [1] on working with BigQuery and > Arrow. > >> > I > >> > just wanted to share some work that Brian Hulette and I helped out > >> > with. > >> > > >> > I'm happy to announce there is now preliminary support for reading > >> > Arrow > >> > data in the BigQuery Storage API [1]. Python library support is > >> available > >> > in the latest release of google-cloud-bigquery-storage [2][3]. > >> > > >> > Caveats: > >> > - Small cached tables are not supported (same with Avro) > >> > - Row filters aren't supported yet. > >> > > >> > Cheers, > >> > Micah > >> > > >> > [1] > >> > > >> > https://lists.apache.org/thread.html/6d374dc6c948d3e84b1f0feda1d48eddf905a99c0ef569d46af7f7af@%3Cdev.arrow.apache.org%3E > >> > [2] https://cloud.google.com/bigquery/docs/reference/storage/ > >> > [3] https://pypi.org/project/google-cloud-bigquery-storage/ > >> > [4] > >> > > >> > https://googleapis.github.io/google-cloud-python/latest/bigquery_storage/gapic/v1beta1/reader.html#google.cloud.bigquery_storage_v1beta1.reader.ReadRowsIterable.to_arrow > >> > > >> > > >