我对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