【发布时间】:2023-02-09 18:11:18
【问题描述】:
我正在尝试使用 getValues() 迭代 TableResult 中的行,如下所示。
如果我使用getValues(),它只会检索第一页的行。我想使用getValues()而不是iterateAll()来迭代所有行。
在下面的代码中,问题是它的时间是无限的。没有结束。 while(results.hasNextPage())没有结束。下面的代码有什么问题?
{
query = "select from aa.bb.cc";
QueryJobConfiguration queryConfig =
QueryJobConfiguration.newBuilder(query)
.setPriority(QueryJobConfiguration.Priority.BATCH)
.build();
TableResult results = bigquery.query(queryConfig);
int i = 0;
int j=0;
while(results.hasNextPage()) {
j++;
System.out.println("page " + j);
System.out.println("Data Extracted::" + i + " records");
for (FieldValueList row : results.getNextPage().getValues()) {
i++;
}
}
System.out.println("Total Count::" + results.getTotalRows());
System.out.println("Data Extracted::" + i + " records");
}
我在源表中只有 200,000 条记录。下面是输出,我强行停止了这个过程。
page 1
Data Extracted::0 records
page 2
Data Extracted::85242 records
page 3
Data Extracted::170484 records
page 4
Data Extracted::255726 records
page 5
Data Extracted::340968 records
page 6
Data Extracted::426210 records
page 7
Data Extracted::511452 records
page 8
Data Extracted::596694 records
.......
.......
.......
.......
【问题讨论】:
标签: java google-cloud-platform google-bigquery gcs