我正在尝试使用Spark数据帧创建一个比较矩阵,并且首先创建一个单列数据帧,每个值一行:
val df = List(1, 2, 3, 4, 5).toDF
从这里开始,我需要为每一行创建一个新列,然后(现在)在每个空间中插入一个随机数,如下所示:
Item 1 2 3 4 5
------ --- --- --- --- ---
1 0 7 3 6 2
2 1 0 4 3 1
3 8 6 0 4 4
4 8 8 1 0 9
5 9 5 3 6 0
任何帮助将不胜感激!
答案 0 :(得分:-1)
考虑使用df
函数来转置名为.pivot()
的输入DataFrame,如下所示:
val output = df.groupBy("item").pivot("item").agg((rand()*100).cast(DataTypes.IntegerType))
这将生成一个新的DataFrame,该数据帧具有与行值相对应的随机Integer值(否则为null
)。
+----+----+----+----+----+----+
|item|1 |2 |3 |4 |5 |
+----+----+----+----+----+----+
|1 |9 |null|null|null|null|
|3 |null|null|2 |null|null|
|5 |null|null|null|null|6 |
|4 |null|null|null|26 |null|
|2 |null|33 |null|null|null|
+----+----+----+----+----+----+
如果您不希望使用null
值,则可以考虑在以后应用UDF。