繁体   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