I have a bigQuery query I am executing via Java client. I am asking for 50k batches, but after first iteration, big query returns random number of batches. Does anyone knows why is that?
var queryConfig = QueryJobConfiguration.newBuilder(query)
.setWriteDisposition(JobInfo.WriteDisposition.WRITE_TRUNCATE)
.setDestinationTable(tableId)
.setAllowLargeResults(true)
.build();
JobId jobId = JobId.of(UUID.randomUUID().toString());
Job queryJob = bigquery.create(JobInfo.newBuilder(queryConfig).setJobId(jobId).build());
TableResult results = queryJob.getQueryResults(BigQuery.QueryResultsOption.pageSize(50000));
//First Page
results
.getValues()
.forEach(row -> {
//System.out.println(row);
//some job
});
long i = 0;
long count = 0;
while (results.hasNextPage()) {
logger.info("Paginated result size: {} in page {}", results.getTotalRows(), results.getNextPageToken());
results = results.getNextPage();
count += results.getValues().spliterator().getExactSizeIfKnown();
results
.getValues()
.forEach(row -> {
//System.out.println(row);
//some job
});
logger.info("iteration {}. Progress: {} / {}", i, count, results.getTotalRows());
i++;
}
}
Logs:
iteration 0. Progress: 38720 / 158226305
iteration 1. Progress: 69091 / 158226305
iteration 2. Progress: 88977 / 158226305
iteration 3. Progress: 114797 / 158226305
...