先過一下定義:
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)