Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何理解Spark Scala中的reduceByKey_Scala_Apache Spark - Fatal编程技术网

如何理解Spark Scala中的reduceByKey

如何理解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类型值的缩

我不理解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
    类型值的缩减

  • 对于RDD[(K,List[U])类型的一对RRDD,可以对每个键的
    列表[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))
    // )
    

  • 你不明白的部分是什么?你明白什么?