【发布时间】:2017-07-10 01:19:00
【问题描述】:
我对 scala 和 spark 2.1 非常陌生。 我正在尝试计算数据框中许多元素之间的相关性,如下所示:
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))
并计算元素之间的相关性:
val correlMatrix: Matrix = Statistics.corr(items, "pearson")
带有以下错误消息:
<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]。
这可能是一项非常容易的任务,但我有点挣扎,我很高兴得到任何建议。
【问题讨论】:
标签: scala apache-spark apache-spark-sql rdd apache-spark-mllib