1. 程式人生 > >Spark之中map與flatMap的區別

Spark之中map與flatMap的區別

一直不太明白spark之中map與flatMap之間的區別。map的作用很容易理解就是對rdd之中的元素進行逐一進行函式操作對映為另外一個rdd。flatMap的操作是將函式應用於rdd之中的每一個元素,將返回的迭代器的所有內容構成新的rdd。通常用來切分單詞。
這裡寫圖片描述
區別1:
flatMap返回的是迭代器中的元素。

這裡寫圖片描述這裡寫圖片描述

上面的例子說明對於傳遞給flatMap的函式返回的型別是一個可迭代的型別(例如list)。

現在比較一下map和flatMap接收返回值為可迭代型別的函式的區別:

這裡寫圖片描述這裡寫圖片描述

上例說明對於返回可迭代型別的函式map與flatMap的區別在於:

map函式會對每一條輸入進行指定的操作,然後為每一條輸入返回一個物件;而flatMap函式則是兩個操作的集合——正是“先對映後扁平化”:

操作1:同map函式一樣:對每一條輸入進行指定的操作,然後為每一條輸入返回一個物件

操作2:最後將所有物件合併為一個物件