public class StreamWriter implements AutoCloseable
A BigQuery Stream Writer that can be used to write data into BigQuery Table.
TODO: Support batching.
Implements
AutoCloseableStatic Methods
getApiMaxRequestBytes()
public static long getApiMaxRequestBytes()
The maximum size of one request. Defined by the API.
Type | Description |
long |
newBuilder(String streamName)
public static StreamWriter.Builder newBuilder(String streamName)
Constructs a new StreamWriterV2.Builder using the given stream.
Name | Description |
streamName | String |
Type | Description |
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.
Name | Description |
streamName | String |
client | BigQueryWriteClient |
Type | Description |
StreamWriter.Builder |
Methods
append(ProtoRows rows)
public ApiFuture<AppendRowsResponse> append(ProtoRows rows)
Schedules the writing of rows at the end of current stream.
Name | Description |
rows | ProtoRows the rows in serialized format to write to BigQuery. |
Type | Description |
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());
Name | Description |
rows | ProtoRows the rows in serialized format to write to BigQuery. |
offset | long the offset of the first row. Provide -1 to write at the current end of stream. |
Type | Description |
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.
Type | Description |
long |
getLocation()
public String getLocation()
Type | Description |
String | the location of the destination. |
getProtoSchema()
public ProtoSchema getProtoSchema()
Type | Description |
ProtoSchema | the passed in user schema. |
getStreamName()
public String getStreamName()
Type | Description |
String | name of the Stream that this writer is working on. |
getUpdatedSchema()
public synchronized TableSchema getUpdatedSchema()
Thread-safe getter of updated TableSchema.
This will return the updated schema only when the creation timestamp of this writer is older than the updated schema.
Type | Description |
TableSchema |
getWriterId()
public String getWriterId()
Type | Description |
String | a unique Id for the writer. |