我试图理解管道内转换的生命周期。
我有一个包含多个变换的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观察的是在运行匹配转换之前读取整个数据集。
答案 0 :(得分:2)
使用DirectPipelineRunner,变换将按照您观察到的完全连续执行。当使用DataflowPipelineRunner运行而没有设置--streaming时,许多转换可以融合在一起并且全部同时运行。使用--streaming,数据将不断地流经整个流水线,并且所有变换都将处于活动状态。