【发布时间】:2020-06-30 18:37:34
【问题描述】:
我是 spark 新手,目前正在尝试在不聚合的情况下从行到列进行数据透视,就像我需要在数据透视后复制数据一样。
我有如下数据
+----+----------+--------+
|abc |col |position|
+----+----------+--------+
|1234|183500000X|0 |
|1234|0202211120|1 |
|1234|VA |2 |
|1234|Y |3 |
|1234|183500000X|0 |
|1234|21174 |1 |
|1234|NC |2 |
|1234|N |3 |
|1234|null |0 |
|1234|null |1 |
|1234| |2 |
|1234| |3 |
|1234|null |0 |
|1234|null |1 |
|1234| |2 |
|1234| |3 |
我想把它改成下面的格式
+----------+----------+----------+---+---+
| abc | 0| 1| 2| 3|
+----------+----------+----------+---+---+
|1234 |183500000X|0202211120| VA| Y|
|1234 |183500000X|21174 | NC| N|
+----------+----------+----------+---+---+
每当我尝试使用 df.groupBy($"abc").pivot("position").agg(first($"col")) 时……我只得到一条记录而不是全部。
有没有办法在不聚合的情况下获取所有记录。
我是否需要加入另一个数据框来提取数据.. 请同样建议我。
【问题讨论】:
-
更新了答案。你也需要做点什么。
-
如果可以申请合适的分组,那么请采纳答案。
标签: scala apache-spark