Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.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
Scala 如何合并RDD元组_Scala_Apache Spark - Fatal编程技术网

Scala 如何合并RDD元组

Scala 如何合并RDD元组,scala,apache-spark,Scala,Apache Spark,我想用reduceByKey合并同一个键的多个元组, 代码如下: val data = Array(DenseMatrix((2.0,1.0,5.0),(4.0,3.0,6.0)), DenseMatrix((7.0,8.0,9.0),(10.0,12.0,11.0))) val init = sc.parallelize(data,2) //getColumn def getColumn(v:DenseMatrix[Double]) : Map[Int, IndexedSeq[(Int

我想用reduceByKey合并同一个键的多个元组, 代码如下:

val data = Array(DenseMatrix((2.0,1.0,5.0),(4.0,3.0,6.0)),
  DenseMatrix((7.0,8.0,9.0),(10.0,12.0,11.0)))

val init = sc.parallelize(data,2)
//getColumn

def getColumn(v:DenseMatrix[Double]) : Map[Int, IndexedSeq[(Int, Double)]]={
  val r = Random
  val index = 0 to v.size - 1
  def func(x:Int, y:DenseMatrix[Double]):(Int,(Int, Double)) =
  {
    ( x,( r.nextInt(10), y.valueAt(x)))
  }
  val rest = index.map{x=> func(x,v)}.groupBy(x=>x._1).mapValues(x=>x.map(_._2))
  rest

}
val out= init.flatMap{ v=> getColumn(v) }
val reduceOutput = tmp.reduceByKey(_++_)

val out2 = out.map{case(k,v)=>k}.collect()  // keys here are not I want
这里有两张图片,第一张是我认为应该是的[key,value]对,第二张显示的是真正的键,它们不是我想要的,所以输出不正确

我该怎么办


您希望得到什么样的结果?您不希望元组作为输出,因为您不知道它们的长度,因此编写代码来处理它们将非常困难。。你到底想要什么?
reduceByKey
看起来不错,元组被合并到一个向量中,但是通过
val out2=out.map{case(k,v)=>k}.collect()
?请澄清?
val out2=out.map{case(k,v)=>k}.collect()
是一个测试,我只想比较一下pic和pic2。因为我认为
val out=init.flatMap{v=>getColumn(v)}
的键是(2,5,0,9,1,2,3,6,1,9,7,3)(检查pic1),但实际上键是pic2。好吧,我知道这个问题,因为
“rest”
IndexedSeq(Int,Double)
,而IndexedSeq不是一个可序列化类型,所以当我们将它与map、flatmap或reduceByKey一起使用时,它会导致操作系统竞速,所以我们最好使用“可序列化类型”@Ramesh Maharjan您到底想要什么结果?您不想要元组作为输出,因为您不知道它们会有多长,所以编写代码来处理它们是非常困难的。。你到底想要什么?
reduceByKey
看起来不错,元组被合并到一个向量中,但是通过
val out2=out.map{case(k,v)=>k}.collect()
?请澄清?
val out2=out.map{case(k,v)=>k}.collect()
是一个测试,我只想比较一下pic和pic2。因为我认为
val out=init.flatMap{v=>getColumn(v)}
的键是(2,5,0,9,1,2,3,6,1,9,7,3)(检查pic1),但实际上键是pic2。好吧,我知道这个问题,因为
“rest”
IndexedSeq(Int,Double)
,而IndexedSeq不是一个可序列化类型,所以当我们将它与map、flatmap或reduceByKey一起使用时,它会导致操作系统竞速,所以我们最好使用“可序列化类型”@Ramesh Maharjan