"压扁"除了按元素压扁集合之外还有其他效果吗



具体来说,Beam中的FlattenPTransform是否执行任何类型的:

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

或者它只是"合并"了两个不同的PCollection?

Flatten转换不执行任何类型的重复数据消除或过滤。如前所述,它只是将多个PCollection合并为一个包含每个输入元素的PCollection。

这意味着:

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()

在这种情况下,resultPCollection包含以下元素:[1, 2, 3, 4, 4, 4, 5, 6]

注意元素4如何在c1中出现一次,在c2中出现两次。这不会以任何方式进行重复数据消除、筛选或删除。

关于Flatten,一个奇怪的事实是,一些运行程序对其进行了优化,并简单地在两个分支中添加下游变换。因此,简而言之,没有特殊的过滤或重复数据消除。简单地合并PCollections

相关内容

  • 没有找到相关文章

最新更新