2
我有一個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轉換爲矩陣。
我有一個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
與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的Vector(順便說一句,只允許雙打)。
結果如下: [1.0,0.0,0.0] [2.0,1.0,4.0]
這個心不是旨在成爲一個完整的答案,而是讓你開始一些幫助,但我相信這可以使用map()函數 –
你能提供更多的細節嗎?它是密集的數據嗎?你事先知道列數嗎?如果行數/列數> 26,會發生什麼情況? – zero323