簡體   English   中英

如何從大查詢中獲取並行分頁數據

[英]How to fetch parallel pagination data from big query

我正在從 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

每個查詢都寫入一個目標表。 如果未提供目標表,BigQuery API 會自動使用對臨時匿名表的引用填充目標表屬性。

有了該表,您可以使用tabledata.list API 調用從中獲取數據。 在可選參數下,您將看到一個startIndex參數,您可以將其設置為任何您想要的,並且可以在分頁腳本中使用。

您可以使用不同的偏移量運行並行 API 調用,這將加快您的請求。

您可以參考本文檔以使用 API 翻頁結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM