具体来说,Beam中的Flatten
PTransform是否可以执行以下任何操作:
还是只是“合并”两个不同的PCollection?
答案 0 :(得分:1)
Flatten
转换不执行任何类型的重复数据删除或任何类型的过滤。如前所述,它只是将多个PCollections 合并到一个包含每个输入元素的PCollections中。
这意味着:
with beam.Pipeline() as p:
c1 = p | "Branch1" >> beam.Create([1, 2, 3, 4])
c2 = p | "Branch2" >> beam.Create([4, 4, 5, 6])
result = (c1, c2) | beam.Flatten()
在这种情况下,result
PCollection包含以下元素:[1, 2, 3, 4, 4, 4, 5, 6]
。
请注意元素4
在c1
中出现一次,在c2
中出现两次的方式。不会以任何方式对它进行重复数据删除,过滤或删除。
作为一个关于Flatten
的奇怪事实,一些跑步者对其进行了优化,并仅在两个分支中添加了下游转换。因此,简而言之,没有特殊的过滤或重复操作。只需合并PCollections 。