2016-10-04 80 views
1

我有一個包含雙精度數組的JavaRDD。現在我想計算每個陣列之間的皮爾遜係數。但是,如果我將rdd轉換爲向量並應用statistics.corr(),函數將計算列,但我希望它可以計算行。任何人都可以提出一種方法來將我的數據轉換爲列,以便我可以應用corr()函數?計算Spark數據集上的Pearson相關度

編輯:statistics.corr()函數將javardd < vector>作爲輸入。

回答

0

你可以嘗試每行轉換爲RDD [雙],並比較它們的組合(手動或環路)

val seriesX: RDD[Double] = ... // row1 
val seriesY: RDD[Double] = ... // row2 must have the same number of partitions and cardinality as seriesX 
val correlation: Double = Statistics.corr(seriesX, seriesY, "pearson") 

,或者你可以嘗試調換您的RDD並通過得到的RDD到科爾( ..) - 在這裏轉置的一些想法 - How to transpose an RDD in Spark

如果您有多個行/記錄,但您希望每個人相對於其他人的相關性,矩陣可能太大,並且這兩個選項可能會過低(如果根本不可能)