如何理解Spark Scala中的reduceByKey
我不理解spark和scala的例子如何理解Spark Scala中的reduceByKey,scala,apache-spark,Scala,Apache Spark,我不理解spark和scala的例子 val result = rdd.map(x => ((x._1, x._2), List(x._3)).reduceByKey(_:::_) :是一种连接两个Scala列表的方法。例如: List(1, 2) ::: List(3) // List(1, 2, 3) 。:::。是二进制函数的快捷方式(l1,l2)=>l1:::l2 给定一个PairRDD(即RDD[(K,V)],该方法使用函数(V,V)=>V对K类型的每个键执行V类型值的缩
val result = rdd.map(x => ((x._1, x._2), List(x._3)).reduceByKey(_:::_)
:
是一种连接两个Scala列表的方法。例如:
List(1, 2) ::: List(3) // List(1, 2, 3)
。:::。
是二进制函数的快捷方式(l1,l2)=>l1:::l2
(V,V)=>V
对K
类型的每个键执行V
类型值的缩减
列表[U]
值执行(l1,l2)=>l1:::l2
缩减,如以下示例所示:
val rdd = sc.parallelize(Seq(
('x', 1, "a"),
('x', 1, "b"),
('y', 2, "c"),
('y', 2, "d"),
('y', 2, "e")
))
val pairRDD = rdd.map(r => ((r._1, r._2), List(r._3))) // RDD[((Char, Int), List[String])]
val result = pairRDD.reduceByKey(_ ::: _)
result.collect
// Array[((Char, Int), List[String])] = Array(
// ((y, 2), List(c, d, e)),
// ((x, 1), List(a, b))
// )
你不明白的部分是什么?你明白什么?