Class StreamWriter (2.18.0)

public class StreamWriter implements AutoCloseable

A BigQuery Stream Writer that can be used to write data into BigQuery Table.

TODO: Support batching.

Inheritance

java.lang.Object > StreamWriter

Implements

AutoCloseable

Static Methods

getApiMaxRequestBytes()

public static long getApiMaxRequestBytes()

The maximum size of one request. Defined by the API.

Returns
TypeDescription
long

newBuilder(String streamName)

public static StreamWriter.Builder newBuilder(String streamName)

Constructs a new StreamWriterV2.Builder using the given stream.

Parameter
NameDescription
streamNameString
Returns
TypeDescription
StreamWriter.Builder

newBuilder(String streamName, BigQueryWriteClient client)

public static StreamWriter.Builder newBuilder(String streamName, BigQueryWriteClient client)

Constructs a new StreamWriterV2.Builder using the given stream and client. AppendRows needs special headers to be added to client, so a passed in client will not work. This should be used by test only.

Parameters
NameDescription
streamNameString
clientBigQueryWriteClient
Returns
TypeDescription
StreamWriter.Builder

Methods

append(ProtoRows rows)

public ApiFuture<AppendRowsResponse> append(ProtoRows rows)

Schedules the writing of rows at the end of current stream.

Parameter
NameDescription
rowsProtoRows

the rows in serialized format to write to BigQuery.

Returns
TypeDescription
ApiFuture<AppendRowsResponse>

the append response wrapped in a future.

append(ProtoRows rows, long offset)

public ApiFuture<AppendRowsResponse> append(ProtoRows rows, long offset)

Schedules the writing of rows at given offset.

Example of writing rows with specific offset.


 ApiFuture<AppendRowsResponse> future = writer.append(rows, 0);
 ApiFutures.addCallback(future, new ApiFutureCallback<AppendRowsResponse>() {
   public void onSuccess(AppendRowsResponse response) {
     if (!response.hasError()) {
       System.out.println("written with offset: " + response.getAppendResult().getOffset());
     } else {
       System.out.println("received an in stream error: " + response.getError().toString());
     }
   }

   public void onFailure(Throwable t) {
     System.out.println("failed to write: " + t);
   }
 }, MoreExecutors.directExecutor());
 
Parameters
NameDescription
rowsProtoRows

the rows in serialized format to write to BigQuery.

offsetlong

the offset of the first row. Provide -1 to write at the current end of stream.

Returns
TypeDescription
ApiFuture<AppendRowsResponse>

the append response wrapped in a future.

close()

public void close()

Close the stream writer. Shut down all resources.

getInflightWaitSeconds()

public long getInflightWaitSeconds()

Returns the wait of a request in Client side before sending to the Server. Request could wait in Client because it reached the client side inflight request limit (adjustable when constructing the StreamWriter). The value is the wait time for the last sent request. A constant high wait value indicates a need for more throughput, you can create a new Stream for to increase the throughput in exclusive stream case, or create a new Writer in the default stream case.

Returns
TypeDescription
long

getUpdatedSchema()

public synchronized TableSchema getUpdatedSchema()

Thread-safe getter of updated TableSchema

Returns
TypeDescription
TableSchema