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返回的是迭代器中...