spark中map()和flatmap()的區別

先過一下定義:
map()是將函數用於RDD中的每個元素,將返回值構成新的RDD。

flatmap()是將函數應用於RDD中的每個元素,將返回的迭代器的所有內容構成新的RDD,這樣就得到了一個由各列表中的元素組成的RDD,而不是一個列表組成的RDD。

有點模糊,沒關係,看例子:

我們採用將每個元素按照空格的方法將每個元素進行分割,分別執行map與flatMap方法。
map方法如下圖所示:
在這裏插入圖片描述

flatMap方法如下圖所示:
在這裏插入圖片描述

再看個例子:

val rdd = sc.parallelize(List("coffee panda","happy panda","happiest panda party"))

輸入

rdd.map(x=>x).collect

結果

res9: Array[String] = Array(coffee panda, happy panda, happiest panda party)

輸入

rdd.flatMap(x=>x.split(" ")).collect

結果

res8: Array[String] = Array(coffee, panda, happy, panda, happiest, panda, party)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章