BigQuery分页通过云结构库的大结果集

时间:2017-08-18 19:21:09

标签: java pagination google-bigquery

我正在努力从Google BigQuery访问数据,数据是500MB,我需要将其转换为需求的一部分。我正在设置Allow Large Results,设置destination table

我已经在Google的新云库中编写了一个java作业,因为现在推荐这个作业 - com.google.cloud:google-cloud-bigquery:0.21.1-beta(我已经尝试了0.20测试版,但没有取得任何丰硕成果)

我对此数据的分页存在问题,该库在提取结果页面方面不一致。这是我的代码段,

代码段

    System.out.println("Accessing Handle of Response");
    QueryResponse response = bigquery.getQueryResults(jobId, QueryResultsOption.pageSize(10000));
    System.out.println("Got Handle of Response");

    System.out.println("Accessing results");
    QueryResult result = response.getResult();
    System.out.println("Got handle of Result. Total Rows: "+result.getTotalRows());

    System.out.println("Reading the results");
    int pageIndex = 0;
    int rowId = 0;
    while (result != null) {
        System.out.println("Reading Page: "+ pageIndex);
        if(result.hasNextPage())
        {
            System.out.println("There is Next Page");       
        }
        else
        {
            System.out.println("No Next Page");
        }

        for (List<FieldValue> row : result.iterateAll()) {
            System.out.println("Row: " + rowId);
            rowId++;
        }

        System.out.println("Getting Next Page: ");
        pageIndex++;
        result = result.getNextPage();
    }

输出打印报表

Accessing Handle of Response  
Got Handle of Response  
Accessing results  
Got handle of Result. Total Rows: 9617008  
Reading the results  
Reading Page: 0  
There is Next Page  
Row: 0  
Row: 1  
Row: 2  
Row: 3  
:  
:  
Row: 9999  
Row: 10000  
Row: 10001  
:  
:  
Row: 19999  
:  
:  

请注意,它永远不会打印/打印 - “获取下一页:”。

我的期望是我会一次获得10000行的数据。请注意,如果我在返回10-15K行的查询上运行相同的代码并将pageSize设置为100条记录,那么每100行后我会得到“获取下一页:”。这是这个beta库的已知问题吗?

0 个答案:

没有答案