最近我有一个场景将数据存储在 keyValue Pair 中,并遇到了一个函数 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))
最佳答案
reduceByKey(_ ++ _)
转换为 reduceByKey((a,b) => a ++ b)
.++
是 method定义于 List
将另一个列表连接到它。
因此,对于样本数据中的键 1,a
将是 List(2,3)
和 b
将是 List(3,4)
因此 List(2,3)
的串联和 List(3,4)
( List(2,3) ++ List(3,4)
) 将产生 List(2,3,3,4)
.
关于scala - reduceByKey(_++ _) 是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44126296/