从数据流管道写入BQ时的动态表名称

时间:2016-03-14 04:13:44

标签: google-cloud-dataflow

作为以下问答的后续问题:

https://stackoverflow.com/questions/31156774/about-key-grouping-with-groupbykey

我想与谷歌数据流工程团队(@jkff)确认,如果Eugene提出的第三个选项完全可以使用谷歌数据流:

“有一个ParDo,它接受这些键并创建BigQuery表,另一个ParDo将数据和流写入表格”

我的理解是ParDo / DoFn将处理每个元素,当从ParDo / DoFn的processElement写出时,我们如何指定表名(从侧输入传入的键的函数)?

感谢。

使用DoFn更新了,由于c.element()。值不是pcollection,因此无法正常工作。

rowSums

1 个答案:

答案 0 :(得分:2)

BigQueryIO.Write转换不支持此功能。您可以做的最接近的事情是使用每个窗口表,并使用自定义WindowFn编码在窗口对象中选择表所需的任何信息。

如果您不想这样做,可以直接从DoFn进行BigQuery API调用。有了这个,您可以将表名设置为您想要的任何内容,由代码计算。这可以从侧输入查找,或直接从DoFn当前正在处理的元素计算。为避免对BigQuery进行太多小调用,您可以使用finishBundle();

批量处理请求

您可以在此处查看Dataflow运行器如何进行流导入: https://github.com/GoogleCloudPlatform/DataflowJavaSDK/blob/master/sdk/src/main/java/com/google/cloud/dataflow/sdk/util/BigQueryTableInserter.java