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

标签 scala apache-spark

最近我有一个场景将数据存储在 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/

相关文章:

python - 在最近的关键条件下加入 Spark DataFrames

scala - 我怎样才能有一个可选的 Sbt 设置?

scala - Apache Spark 中的数据帧相等

java - Play 编译时间太长

scala - Kafka Producer 不写入 kafka 主题

apache-spark - Spark2.4.6 没有 hadoop : A JNI error has occurred

scala - 为什么 `val`中的 `object`不能自动定型?

apache-spark - Spark : How do I write individual row to S3/HDFS as JPG

.net - 有没有办法使用.NET SPARK更改导出文件名?

python - 获取 TypeError ("StructType can not accept object %r in type %s"% (object, type(obj)))