例如:
Input: RDD[arraySeq((arraySeq(1),DenseMatrix(2,3)), (arraySeq(2),DenseMatrix(5,7)), (arraySeq(4),DenseMatrix(7,8)), ((arraySeq(1),DenseMatrix(10,23)))]
Output: RDD[(double(1), Vector(2,3,10,23)), (double(2), Vector(5,7)), (double(4), Vector(7,8))]
我搜索了#34; combineByKey,reduceByKey",他们似乎能解决这个问题,但我不知道如何编写代码。
此外,如果输入是:
arraySeq( (arraySeq(1),DenseMatrix(2,3)), (arraySeq(2),DenseMatrix(5,7)), (arraySeq(4),DenseMatrix(7,8)), ((arraySeq(1),DenseMatrix(10,23)) )
,
这意味着输入不是RDD,如果我想获得输出,我该怎么办:
(double(1), DenseVector(2,3,10,23)), (double(2), DenseVector(5,7)), (double(4), DenseVector(7,8))
,输出也不是RDD。
答案 0 :(得分:0)
试试这个。
val pairs = List((1,Seq(2,3)), (2,Seq(5,7)), (4,Seq(7,8)), ((1,Seq(10,23))))
val pairsRdd = sc.parallelize(pairs)
pairsRdd.reduceByKey((a,b)=>a++b).collect
输出:
res0: Array[(Int, Seq[Int])] = Array((1,List(2, 3, 10, 23)), (2,List(5, 7)), (4,List(7, 8)))