簡體   English   中英

在數據流中從BigQuery讀取時設置maximumBillingTier

[英]Set maximumBillingTier when reading from BigQuery in Dataflow

從BigQuery讀取數據作為查詢結果時,我正在運行GCP Dataflow作業。 我正在使用google-cloud-dataflow-java-sdk-all版本1.9.0。 設置管道的代碼片段如下所示:

PCollection<TableRow> myRows = pipeline.apply(BigQueryIO.Read
            .fromQuery(query)
            .usingStandardSql()
            .withoutResultFlattening()
            .named("Input " + tableId)
    );

查詢非常復雜,導致產生錯誤消息:

查詢超出了對第1層的資源限制。,錯誤:查詢超出了對第1層的資源限制。

我想設置maximumBillingTier因為它是在Web UI或bq腳本中完成的。 除了為整個項目設置默認值之外,我找不到任何其他方法,不幸的是這不是一個選擇。

我試圖通過這些設置,但沒有成功:

  • DataflowPipelineOptions-此接口或其擴展的接口都沒有該設置
  • BigQueryIO.Read.Bound-我希望它就在usingStandardSql和其他類似的代碼旁邊,但顯然它不存在
  • JobConfigurationQuery-此類具有所有不錯的設置,但似乎在設置管道時根本不使用它

有什么方法可以從Dataflow作業中傳遞此設置嗎?

也許Google員工會糾正我,但看來您是對的。 我也看不到此參數。 我檢查了數據流Beam API。

JobConfigurationQuery ,Dataflow正在使用BigQuery API中的JobConfigurationQuery ,但它只是不通過其自己的API公開該參數。

我看到的一種解決方法是先直接使用BigQuery API運行復雜的查詢-然后再進入管道。 這樣,您可以通過JobConfigurationQuery類設置最大計費層。 將該查詢的結果寫入BigQuery中的另一個表。

最后,在您的管道中,只需讀取通過復雜查詢創建的表即可。

暫無
暫無

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

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