2017-08-14 41 views
5

FlatMap veya Map'i kullanmam gereken senaryoyu anlamak istiyorum. The documentation bana açık görünmedi.Apache Kiriş: FlatMap vs Map?

Hala hangi senaryoda FlatMap veya Map dönüşümünü kullanmam gerektiğini anlamıyorum.

Birisi bana bir örnek verebilir, böylece onların farkını anlayabilir miyim?

Kıvılcımdaki Harita ve Harita arasındaki farkı anlayabiliyorum, ancak herhangi bir benzerlik olup olmadığından emin değil misiniz?

cevap

8

Kirişteki bu dönüşümler Spark (Scala da) ile tamamen aynıdır.

bir Map dönüşümü

, N elemanların diğer PCollection içine N elemanlarının bir PCollection gelen alır. Bir FlatMap dönüşümü

tek PCollection içine düzleştirilmiş sonra sıfır ya da daha fazla eleman, N koleksiyonlarına N elemanlarının bir PCollections alır.

Basit bir örnek olarak aşağıdaki işlemler gerçekleştirilir:

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

Oysa:

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- Anladın mı. Detaylı açıklamanız ve örnekleriniz için teşekkür ederiz. :) – EmmaYang

+0

Eğer uygunsa cevabı kabul edebilirsiniz:) – Pablo

+0

Mükemmel açıklama +1 – codebrotherone