展平除了对元素进行展平以外,是否有其他效果?

时间:2018-12-10 21:44:21

标签: google-cloud-dataflow apache-flink apache-beam

具体来说,Beam中的Flatten PTransform是否可以执行以下任何操作:

  • 重复数据删除
  • 过滤
  • 清除现有元素

还是只是“合并”两个不同的PCollection?

1 个答案:

答案 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]

请注意元素4c1中出现一次,在c2中出现两次的方式。不会以任何方式对它进行重复数据删除,过滤或删除。

作为一个关于Flatten的奇怪事实,一些跑步者对其进行了优化,并仅在两个分支中添加了下游转换。因此,简而言之,没有特殊的过滤或重复操作。只需合并PCollections