【发布时间】:2018-03-31 14:30:39
【问题描述】:
我有以下数据结构,表示电影 ID(第一列)和其余列中不同用户对该电影的评分 - 类似这样:
+-------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
|movieId| 1| 2| 3| 4| 5| 6| 7| 8| 9| 10| 11| 12| 13| 14| 15|
+-------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
| 1580|null|null| 3.5| 5.0|null|null|null|null|null|null|null|null|null|null|null|
| 3175|null|null|null|null|null|null|null|null|null|null|null|null|null| 5.0|null|
| 3794|null|null|null|null|null|null|null|null|null|null|null| 3.0|null|null|null|
| 2659|null|null|null| 3.0|null|null|null|null|null|null|null|null|null|null|null|
我想把这个DataFrame转成一个DataSet
final case class MovieRatings(movie_id: Long, ratings: Map[Long, Double])
所以它会是这样的
[1580, [1 -> null, 2 -> null, 3 -> 3.5, 4 -> 5.0, 5 -> null, 6 -> null, 7 -> null,...]]
等等
如何做到这一点?
这里的问题是用户数量是任意的。我想将它们压缩到一个单独的列中,使第一列保持不变。
【问题讨论】:
-
我不认为这是重复的,因为这个问题是我该怎么做,而那个问题是我正在尝试这样做但它不起作用,哦等等,我需要升级火花。这个问题要求教程,因此是题外话。
标签: scala apache-spark dataframe dataset