作为以下问答的后续问题:
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
答案 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