google-cloud-dataflow - Apache Beam:FlatMap与Map?

标签 google-cloud-dataflow apache-beam

我想了解在哪种情况下应该使用FlatMap或Map。 The documentation在我看来似乎不太清楚。

我仍然不明白在哪种情况下应该使用FlatMap或Map的转换。

有人可以给我一个例子,让我了解他们的区别吗?

我了解Spark中FlatMap与Map的区别,但是不确定是否有相似之处?

最佳答案

These transforms in Beam are exactly same as Spark (Scala too).


Map转换将N个元素的PCollection映射到N个元素的另一个PCollection
FlatMap转换将N个元素的PCollections映射到零个或多个元素的N个集合中,然后将其展平为单个PCollection

作为一个简单的例子,发生以下情况:
beam.Create([1, 2, 3]) | beam.Map(lambda x: [x, 'any'])
# The result is a collection of THREE lists: [[1, 'any'], [2, 'any'], [3, 'any']]

鉴于:
beam.Create([1, 2, 3]) | beam.FlatMap(lambda x: [x, 'any'])
# The lists that are output by the lambda, are then flattened into a
# collection of SIX single elements: [1, 'any', 2, 'any', 3, 'any']

关于google-cloud-dataflow - Apache Beam:FlatMap与Map?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45670930/

相关文章:

java - 如何使用 java sdk 查找 Google DataFlow 中每个步骤所花费的总执行时间

python - 如何在 Python 中使用 Apache Beam 读取和操作 Json 文件

python - 避免在 Beam Python SDK 中重新计算所有云存储文件的大小

google-cloud-dataflow - 在 Dataflow 流水线处理完所有数据后执行操作

google-bigquery - 来自 Apache Beam 的 BigQuery 授权 View

google-cloud-dataflow - 具体版本 : PubSub/Dataflow acknowledgement of unbounded data

scala - Scio/apache 光束 java.lang.IllegalArgumentException : unable to serialize method

google-cloud-dataflow - 在 Apache Beam 中添加 2 个 Dofn 之间的依赖关系

java - 缓冲和刷新 Apache Beam 流数据

java - 在 Apache Beam 中使用 BigQuery 处理空 PCollection