Spark之中map與flatMap的區別

2021-08-28 05:36:32 字數 1035 閱讀 3221

map()是將函式用於rdd中的每個元素,將返回值構成新的rdd。

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

有些拗口,看看例子就明白了。 輸入

rdd.map(x=>x).collect
結果 輸入

rdd.flatmap(x=>x.split(" ")).collect
結果

flatmap說明白就是先map然後再flat,再來看個例子:

val rdd1 = sc.parallelize(list(1,2,3,3))

scala> rdd1.map(x=>x+1).collect

res10: array[int] = array(2, 3, 4, 4)

scala> rdd1.flatmap(x=>x.to(3)).collect

res11: array[int] = array(1, 2, 3, 2, 3, 3, 3)

點到為止版:flatmap = flatten + map;

深坑版: 就是自函子範疇上的乙個協變函子的態射函式與自然變換的組合!

var li=list(1,2,3,4)

var res =li.flatmap(x=> x match )

println(res)

li= list(1,2,3,4)

var res2 =li.map(x=> x match )

println(res2)

//output=>

list(2,4, 3.1,3.2, 8)

list(2,4, list(3.1,3.2), 8)

program exited.

這個過程就像是先map, 然後再將 map 出來的這些列表首尾相接 (flatten).

這個過程就像是先 map, 然後再將 map 出來的這些列表首尾相接 (flatten).

Spark之中map與flatMap的區別

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

Spark之中map與flatMap的區別

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

Spark之中map與flatMap的區別

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