什么是BigQuery的桌面装饰器等效的Cloud Dataflow?

时间:2015-03-23 23:05:55

标签: google-cloud-dataflow

我们在BigQuery中有一个大型表格,其中数据正在流入。每天晚上,我们都希望运行Cloud Dataflow管道来处理过去24小时的数据。

在BigQuery中,可以使用' Table Decorator'来指定我们想要的范围,即24小时。

从BQ表读取时,Dataflow中是否可以以某种方式使用相同的功能?

我们已经看过' Windows' Dataflow的文档,但我们无法确定这是否是我们所需要的。到目前为止,我们想出了这个(我们希望使用FixedWindows的最后24小时数据),但它仍然试图读取整个表:

pipeline.apply(BigQueryIO.Read
                .named("events-read-from-BQ")
                .from("projectid:datasetid.events"))
                .apply(Window.<TableRow>into(FixedWindows.of(Duration.standardHours(24))))
                .apply(ParDo.of(denormalizationParDo)
                        .named("events-denormalize")
                        .withSideInputs(getSideInputs()))
                .apply(BigQueryIO.Write
                        .named("events-write-to-BQ")
                        .to("projectid:datasetid.events")
                        .withSchema(getBigQueryTableSchema())
                        .withWriteDisposition(BigQueryIO.Write.WriteDisposition.WRITE_TRUNCATE)                          .withCreateDisposition(BigQueryIO.Write.CreateDisposition.CREATE_IF_NEEDED));

我们是否走在正确的轨道上?

1 个答案:

答案 0 :(得分:5)

感谢您的提问。

此时,BigQueryIO.Read需要“project:dataset:table”格式的表信息,因此指定装饰器将不起作用。
在对此提供支持之前,您可以尝试以下方法:

  • 运行批处理阶段,提取整个bigquery并过滤掉不必要的数据并处理该数据。如果表格非常大,如果读取的数据量远远小于数据总量,您可能希望将数据分叉到一个单独的表中。
  • 使用流数据流。例如,您可以将数据发布到Pubsub,并创建一个24小时窗口的流式管道。流媒体管道连续运行,但提供了滑动窗口与日常窗口。

希望这有帮助