2017-08-14 5 views
5

Ich möchte verstehen, in welchem ​​Szenario ich FlatMap oder Map verwenden soll. The documentation schien mir nicht klar zu sein.Apache Beam: FlatMap vs Karte?

Ich verstehe immer noch nicht, in welchem ​​Szenario ich die Transformation von FlatMap oder Map verwenden sollte.

Kann mir jemand ein Beispiel geben, damit ich ihren Unterschied verstehen kann?

Ich verstehe den Unterschied von FlatMap vs Karte in Spark, und aber nicht sicher, ob es Ähnlichkeiten gibt?

Antwort

8

Diese Transformationen in Beam sind genau wie Spark (Scala auch).

A Map Transformation abbildet aus einem PCollection von N Elementen in einer anderen PCollection von N Elementen.

A FlatMap Transformation ordnet einen PCollections von N Elemente in N Sammlung von null oder mehr Elemente, die dann in einer einzigen PCollection abgeflacht.

Als einfaches Beispiel, geschieht folgendes:

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']] 

Während:

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'] 
+0

Pablo- Verstanden. Vielen Dank für Ihre ausführliche Erläuterung und Beispiele. :) – EmmaYang

+0

Sie können die Antwort akzeptieren, wenn es angemessen ist:) – Pablo

+0

Hervorragende Erklärung +1 – codebrotherone