google-cloud-dataflow - started - dataflow windowing
Apache Beam: FlatMap vs Mapa? (1)
Estas transformaciones en Beam son exactamente iguales a Spark (Scala también).
Una transformación de Map
, mapea desde una PCollection
de N elementos a otra PCollection
de N elementos.
Una transformación FlatMap
asigna un PCollections
de N elementos en N colecciones de cero o más elementos, que luego se aplanan en un solo PCollection
.
Como un simple ejemplo, sucede lo siguiente:
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'']]
Mientras:
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'']
Quiero entender en qué escenario debería usar FlatMap o Map. La documentación no me pareció clara.
Todavía no entiendo en qué escenario debo usar la transformación de FlatMap o Map.
¿Podría alguien darme un ejemplo para que pueda entender su diferencia?
Entiendo la diferencia entre FlatMap y Map en Spark, y sin embargo, ¿no estoy seguro de si existe alguna similitud?