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
Matrix 将RDD激发到矩阵中_Matrix_Apache Spark_Rdd - Fatal编程技术网

Matrix 将RDD激发到矩阵中

Matrix 将RDD激发到矩阵中,matrix,apache-spark,rdd,Matrix,Apache Spark,Rdd,我有一个RDD,比如: (A,AA,1) (A,BB,0) (A,CC,0) (B,AA,2) (B,BB,1) (B,CC,4) 我想将其转换为以下RRD: ([1,0,0],[2,1,4]) 顺序对我来说很重要,因为主要建议是使用RowMatrix将第二个RDD转换为矩阵 您需要小心措辞,当您要求矩阵时,您是指类似于spark.mllib.Matrix?如果是这样,您需要按照非常具体的说明创建一个。然而,在我看来,你的问题可以用一种更容易的方式解决。只需将zipWithIndex与gr

我有一个RDD,比如:

(A,AA,1)
(A,BB,0)
(A,CC,0)
(B,AA,2)
(B,BB,1)
(B,CC,4)
我想将其转换为以下RRD:

([1,0,0],[2,1,4]) 

顺序对我来说很重要,因为主要建议是使用RowMatrix将第二个RDD转换为矩阵

您需要小心措辞,当您要求矩阵时,您是指类似于
spark.mllib.Matrix
?如果是这样,您需要按照非常具体的说明创建一个。然而,在我看来,你的问题可以用一种更容易的方式解决。只需将
zipWithIndex
groupBy

//Here is how I see it
val test = sc.parallelize(Array(("A","AA",1),("A","BB",0),("A","CC",0),("B","AA",2),("B","BB",1),("B","CC",4))).zipWithIndex
val grouptest = test.groupBy(_._1._1).map(x=>(Vectors.dense(x._2.map(y=>(y._2,y._1._3)).toArray.sortBy(_._1).map(z=>z._2.toDouble))))
在您的示例中,您似乎希望结果作为向量?所以我使用了spark的向量(顺便说一下,它只允许双精度)

结果如下: [1.0,0.0,0.0]
[2.0,1.0,4.0]

这并不是一个完整的答案,但有助于您入门,但我相信您可以使用map()函数。您能提供更多详细信息吗?是密集数据吗?你事先知道列数吗?如果行/列数>26,会发生什么情况?