我對scala和spark 2.1很陌生。 我試圖計算一個數據幀,它看起來像這些元素之間的相關性:將Spark數據幀轉換爲org.apache.spark.rdd.RDD [org.apache.spark.mllib.linalg.Vector]
item_1 | item_2 | item_3 | item_4
1 | 1 | 4 | 3
2 | 0 | 2 | 0
0 | 2 | 0 | 1
這裏是我試過:元素之間
val df = sqlContext.createDataFrame(
Seq((1, 1, 4, 3),
(2, 0, 2, 0),
(0, 2, 0, 1)
).toDF("item_1", "item_2", "item_3", "item_4")
val items = df.select(array(df.columns.map(col(_)): _*)).rdd.map(_.getSeq[Double](0))
而且calcualte相關:
val correlMatrix: Matrix = Statistics.corr(items, "pearson")
隨着followning錯誤消息:
<console>:89: error: type mismatch;
found : org.apache.spark.rdd.RDD[Seq[Double]]
required: org.apache.spark.rdd.RDD[org.apache.spark.mllib.linalg.Vector]
val correlMatrix: Matrix = Statistics.corr(items, "pearson")
我不知道如何從數據框中創建org.apache.spark.rdd.RDD[org.apache.spark.mllib.linalg.Vector]
。
這可能是一個非常簡單的任務,但我有點掙扎,我很樂意提供任何建議。
非常感謝你 - 這就是我一直在尋找的解決方案 – Duesentrieb