web-dev-qa-db-fra.com

Apache Beam: FlatMap vs Map?

Je veux comprendre dans quel scénario utiliser FlatMap ou Map. La documentation ne m'a pas paru claire.

Je ne comprends toujours pas dans quel scénario utiliser la transformation de FlatMap ou Map.

Quelqu'un pourrait-il me donner un exemple pour que je puisse comprendre leur différence?

Je comprends la différence entre FlatMap et Map dans Spark, mais je ne sais pas s'il y a une similitude?

25
EmmaYang

Ces transformations dans Beam sont exactement les mêmes que Spark (Scala aussi).

Une transformation Map, mappe d'un PCollection de N éléments en un autre PCollection de N éléments.

Une transformation FlatMap mappe un PCollections de N éléments en N collections de zéro ou plusieurs éléments, qui sont ensuite aplatis en un seul PCollection.

À titre d'exemple simple, les événements suivants se produisent:

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

Tandis que:

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