reduceByKey是什么意思(_ ++ _)

Roh*_*yak 5 scala apache-spark

最近我有一个场景将数据存储在keyValue对中并遇到了一个函数reduceByKey(_ ++ _).这更像是速记语法.我无法理解这实际意味着什么.

例如:reduceBykey(_ + _) 意思是reduceByKey((a,b)=>(a+b))

所以reduceByKey(_ ++ _)意味着??

我能够使用数据创建Key value对reduceByKey(_ ++ _).

val y = sc.textFile("file:///root/My_Spark_learning/reduced.txt")

y.map(value=>value.split(","))
  .map(value=>(value(0),value(1),value(2)))
  .collect
  .foreach(println)

(1,2,3)
(1,3,4)
(4,5,6)
(7,8,9)

y.map(value=>value.split(","))
  .map(value=>(value(0),Seq(value(1),value(2))))
  .reduceByKey(_ ++ _)
  .collect
  .foreach(println)

(1,List(2, 3, 3, 4))
(4,List(5, 6))
(7,List(8, 9))
Run Code Online (Sandbox Code Playgroud)

rog*_*one 6

reduceByKey(_ ++ _)翻译成reduceByKey((a,b) => a ++ b).

++是一个定义的方法,List它将另一个列表连接到它.

因此,对于在采样数据钥匙1,aList(2,3)bList(3,4)和因此级联List(2,3)List(3,4)(List(2,3) ++ List(3,4))将产生List(2,3,3,4).