我正在尝试使用Spark DataFrame创建一个比较矩阵,并且是通过创建每个值的单列数据框开始的,请开始:
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
任何帮助将不胜感激!
考虑使用.pivot()
函数以下函数来转置称为df
的输入数据帧:
val output = df.groupBy("item").pivot("item").agg((rand()*100).cast(DataTypes.IntegerType))
这将生成一个新的数据框,并具有随机的整数值corrisponding to Row值(否则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。