Я очень новичок в scala и spark 2.1. Я пытаюсь вычислить корреляцию между многими элементами в кадре данных, который выглядит следующим образом:Преобразование световых данных в формат 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