Java 批处理管道上的不同操作

Java 批处理管道上的不同操作,java,google-cloud-dataflow,apache-beam,distinct-values,Java,Google Cloud Dataflow,Apache Beam,Distinct Values,从:Distinct获取一个PCollection并返回一个包含输入的所有不同元素的PCollection。因此,每个窗口中的每个元素都是唯一的。 此外,除非在Dataflow 2.5.0的批处理中另有规定,否则我没有弄错,所有元素都是同一窗口的一部分 这意味着线性管道中的不同的阶段将应用于所有元素。然而,我观察到Distinct之后的阶段可能在Distinct阶段完成之前就已经开始处理(=一些元素还没有完成)。更重要的是,Distinct阶段似乎只需要很少的计算能力(如visualizatio

从:
Distinct获取一个PCollection并返回一个包含输入的所有不同元素的PCollection。因此,每个窗口中的每个元素都是唯一的。

此外,除非在Dataflow 2.5.0的批处理中另有规定,否则我没有弄错,所有元素都是同一窗口的一部分

这意味着线性管道中的
不同的
阶段将应用于所有元素。然而,我观察到
Distinct
之后的阶段可能在
Distinct
阶段完成之前就已经开始处理(=一些元素还没有完成)。更重要的是,
Distinct
阶段似乎只需要很少的计算能力(如visualization console.cloud.google.com/dataflow/jobsDetail/…),这是出乎意料的,因为在数百万输入中查找重复项对我来说似乎是一项后续任务

因此,我的问题是:在线性管道上进行批处理的
阶段是否确实适用于批处理的所有元素?我是否遗漏了什么

管道示例:

Pipeline p = Pipeline.create(options);
p.apply("Stuff", ParDo.of(new Stuff())
 .apply(Distinct.<String>create())
 .apply("OtherStuff", ParDo.of(new OtherStuff())
Pipeline p=Pipeline.create(选项);
p、 应用(“Stuff”,ParDo.of(newstuff())
.apply(Distinct.create())
.apply(“OtherStuff”,ParDo.of(new OtherStuff())

是的,它适用于所有元素。基本上,当独立操作后的阶段已经开始处理时,没有问题。独立操作只需要抑制重复项,但可以处理元素的第一次观察

请看一下,看看它是如何在内部工作的,因为它基本上由一个简单的
Combine.perKey
操作组成,没有聚合任何值