【问题标题】:How to fetch parallel pagination data from big query如何从 bigquery 中获取并行分页数据
【发布时间】:2022-08-18 23:53:54
【问题描述】:

我正在从 bq 获取分页数据,因为数据量很大,需要花费大量时间来处理它们。

while (results.hasNextPage()) {
            results = results.getNextPage();
            count += results.getValues().spliterator().getExactSizeIfKnown();
            results
                    .getValues()
                    .forEach(row ->
                                {
                                    //Some operations.
                                }
                    );
            logger.info(\"Grouping completed in iteration {}. Progress: {} / {}\", i, count, results.getTotalRows());
            i++;
        }

我用 visualVm 检查了我的程序,我意识到大部分时间都花在了results.getNextPage 行上,该行正在获取下一页数据。有没有办法让它平行?我的意思是在不同的线程中获取每批数据(在我的情况下是 20K)。我正在使用java客户端com.google.cloud.bigquery

    标签: google-bigquery


    【解决方案1】:

    每个查询都写入一个目标表。如果未提供目标表,BigQuery API 会自动使用对临时匿名表的引用填充目标表属性。

    有了该表,您可以使用 tabledata.list API call 从中获取数据。在可选参数下,您将看到一个 startIndex 参数,您可以将其设置为任何您想要的,并且可以在分页脚本中使用。

    您可以使用不同的偏移量运行并行 API 调用,从而加快您的请求。

    你可以参考这个document 使用 API 浏览结果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-13
      • 1970-01-01
      • 2023-02-04
      • 2023-01-26
      • 1970-01-01
      • 2018-04-04
      • 1970-01-01
      • 2011-03-25
      相关资源
      最近更新 更多