PipeLine具有多个转换

时间:2015-05-12 00:09:13

标签: google-cloud-dataflow

我试图理解管道内转换的生命周期。

我有一个包含多个变换的pipleline。

Pipeline p = Pipeline.create(options);
p.apply(TextIO.Read.named("ReadLines").from(inputFile))
            .apply(new ReadData())
            .apply(new Match())
            .apply(new Record())
            .apply(BigQueryIO.Write
                    .to(tableRef)
                    .withSchema(getSchema())
                    .withCreateDisposition(BigQueryIO.Write.CreateDisposition.CREATE_IF_NEEDED)
                    .withWriteDisposition(BigQueryIO.Write.WriteDisposition.WRITE_TRUNCATE));

在每个转换中都有一个DoFn。在转移到下一个转换之前,是否需要完成节点正在处理的整个批处理?

我至少使用DirectPipelineRunner观察的是在运行匹配转换之前读取整个数据集。

1 个答案:

答案 0 :(得分:2)

使用DirectPipelineRunner,变换将按照您观察到的完全连续执行。当使用DataflowPipelineRunner运行而没有设置--streaming时,许多转换可以融合在一起并且全部同时运行。使用--streaming,数据将不断地流经整个流水线,并且所有变换都将处于活动状态。