Flatten 除了按元素展平集合之外还有其他效果吗?
Does Flatten have any effects other than flattening collections element-wise?
具体来说,Beam 中的 Flatten
PTransform 是否执行任何类型的:
- 去重
- 过滤
- 清除现有元素
还是只是 "merge" 两个不同的 PCollection?
Flatten
转换不执行任何类型的重复数据删除或任何类型的过滤。如前所述,它只是 将多个 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.
具体来说,Beam 中的 Flatten
PTransform 是否执行任何类型的:
- 去重
- 过滤
- 清除现有元素
还是只是 "merge" 两个不同的 PCollection?
Flatten
转换不执行任何类型的重复数据删除或任何类型的过滤。如前所述,它只是 将多个 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.