Hi,

AFAIK there are two types of batching/sharding for BigQuery streaming
inserts: 1) Hard-coded batch size via the `--numStreamingKeys` pipeline
option, and 2) Automatic sharing via `withAutoSharding()`.

Instead, I'd like to do my own batching and provide my own GroupIntoBatches
implementation. More precisely, I'd like to batch rows by overall bytesize
instead of by number of rows. The reason is that some individual rows might
potentially be very large, which I believe could cause some streaming
insert requests to fail because their overall payloads would be too large
and be rejected by the BigQuery API.

However, I'm not sure that is possible from looking at the Java SDK
internals, as `BigQueryIO.write()` appears to only accept
`PCollection<TableRow>`. Ideally I'd like to instead provide an input of
pre-batched rows in the form of `Iterable<TableRow>`.

>From looking at the Python SDK, it looks like that might be possible by
setting `BigQueryWriteFn.with_batched_input=True`.

Is what I'm trying to achieve possible with the Java SDK?

Thanks!

Julien

Reply via email to