use of com.google.cloud.bigquery.storage.v1beta1.Storage.Stream in project java-bigquerystorage by googleapis.
the class ITBigQueryStorageTest method ReadStreamToOffset.
/**
* Reads to the specified row offset within the stream. If the stream does not have the desired
* rows to read, it will read all of them.
*
* @param stream
* @param rowOffset
* @return the number of requested rows to skip or the total rows read if stream had less rows.
*/
private long ReadStreamToOffset(Stream stream, long rowOffset) {
StreamPosition readPosition = StreamPosition.newBuilder().setStream(stream).build();
ReadRowsRequest readRowsRequest = ReadRowsRequest.newBuilder().setReadPosition(readPosition).build();
long rowCount = 0;
ServerStream<ReadRowsResponse> serverStream = client.readRowsCallable().call(readRowsRequest);
Iterator<ReadRowsResponse> responseIterator = serverStream.iterator();
while (responseIterator.hasNext()) {
ReadRowsResponse response = responseIterator.next();
rowCount += response.getRowCount();
if (rowCount >= rowOffset) {
return rowOffset;
}
}
return rowCount;
}
use of com.google.cloud.bigquery.storage.v1beta1.Storage.Stream in project presto by prestodb.
the class BigQuerySplitManager method readFromBigQuery.
private ImmutableList<BigQuerySplit> readFromBigQuery(TableId tableId, Optional<List<ColumnHandle>> projectedColumns, int actualParallelism, Optional<String> filter) {
List<ColumnHandle> columns = projectedColumns.orElse(ImmutableList.of());
ImmutableList<String> projectedColumnsNames = columns.stream().map(column -> ((BigQueryColumnHandle) column).getName()).collect(toImmutableList());
ReadSession readSession = new ReadSessionCreator(readSessionCreatorConfig, bigQueryClient, bigQueryStorageClientFactory).create(tableId, projectedColumnsNames, filter, actualParallelism);
return readSession.getStreamsList().stream().map(stream -> BigQuerySplit.forStream(stream.getName(), readSession.getAvroSchema().getSchema(), columns)).collect(toImmutableList());
}
use of com.google.cloud.bigquery.storage.v1beta1.Storage.Stream in project hadoop-connectors by GoogleCloudDataproc.
the class DirectBigQueryRecordReaderTest method initialize.
private void initialize() throws Exception {
ReadRowsRequest request = ReadRowsRequest.newBuilder().setReadPosition(StreamPosition.newBuilder().setStream(STREAM)).build();
reader.initialize(split, taskContext);
verify(bqClient).readRowsCallable();
verify(readRows).call(eq(request));
}
use of com.google.cloud.bigquery.storage.v1beta1.Storage.Stream in project hadoop-connectors by GoogleCloudDataproc.
the class DirectBigQueryRecordReader method initialize.
@Override
public void initialize(InputSplit genericSplit, TaskAttemptContext context) throws IOException {
DirectBigQueryInputSplit split = (DirectBigQueryInputSplit) genericSplit;
schema = parser.parse(checkNotNull(split.getSchema(), "schema"));
stream = Stream.newBuilder().setName(checkNotNull(split.getName(), "name")).build();
ReadRowsRequest request = ReadRowsRequest.newBuilder().setReadPosition(StreamPosition.newBuilder().setStream(stream).build()).build();
client = getClient(context.getConfiguration());
responseIterator = client.readRowsCallable().call(request).iterator();
recordIterator = Collections.emptyIterator();
limit = split.getLimit();
idx = 0;
finalized = false;
}
Aggregations