最近我遇到了一个场景,需要以键值对的形式存储数据,并使用函数reduceByKey(_ ++ _)
。这更像是一种简写语法。我不理解它的实际含义。
例如:reduceBykey(_ + _)
表示reduceByKey((a,b)=>(a+b))
那么reduceByKey(_ ++ _)
的含义是什么?
使用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))