2017-08-11 76 views
0

我是新的谷歌数据流。我有2个数据流管道来执行2个不同的工作。一个是ETL过程并加载到Bigquery,另一个从Bigquery读取以汇总报告。 我想运行管道ETL firt,并在完成报告管道将运行以确保bigquery中的数据是最新更新。设置管道谷歌数据流的优先级

我曾尝试在一条管道中运行,但它无能为力。现在我必须先为ETL运行手动,然后运行报告管道。

任何机构可以给我一些建议,在一条管道中运行2个工作。 谢谢。

+0

我找到了解决办法是:我建立ETL过程在另一个管道一个管道和聚合过程中,在那之后我导出的每个管道罐子可运行的文件,我用shell脚本每天运行批处理作业计划与聚合取决于ETL过程的状态。 – lknguyen

回答

1

您应该可以在单一管道中执行这两个操作。与写入BigQuery然后尝试读取并生成报告不同,可以考虑将这些中间数据用于这两种用途。例如:

PCollection<Input> input = /* ... */; 
// Perform your transformation logic 
PCollection<Intermediate> intermediate = input 
    .apply(...) 
    .apply(...); 
// Convert the transformed results into table rows and 
// write those to BigQuery. 
intermediate 
    .apply(ParDo.of(new IntermediateToTableRowETL()) 
    .apply(BigQueryIO.write(...)); 
// Generate your report over the transformed data 
intermediate 
    .apply(...) 
    .apply(...); 
+0

感谢@Ben,我会尽力的 – lknguyen