我有一个dataFrame
如下
-----------------------------
| A | B | C |
-----------------------------
| 1 | col_1 | val1 |
| 1 | col_2 | val2 |
| 1 | col_3 | val3 |
| 1 | col_4 | val4 |
-----------------------------
我需要如下转换
-----------------------------------------------
| A | col_1 | col_2 | col_3 | col_4 |
-----------------------------------------------
| 1 | val1 | val2 | val3 | val4 |
-----------------------------------------------
如何使用scala
+ spark-sql
执行此操作?任何线索都将受到高度赞赏。
答案 0 :(得分:4)
一个groupBy和一个agg子句应该足够了:
df.groupBy("A").pivot("B").agg(first("C"))
与groupB首先,您将可能的值进行分组,然后根据键列(在您的情况下为B)旋转并获得值(C)
输入
df.show
+---+-----+----+
| A| B| C|
+---+-----+----+
| 1|col_1|val1|
| 1|col_2|val2|
| 1|col_3|val3|
| 1|col_4|val4|
+---+-----+----+
输出
+---+-----+-----+-----+-----+
| A|col_1|col_2|col_3|col_4|
+---+-----+-----+-----+-----+
| 1| val1| val2| val3| val4|
+---+-----+-----+-----+-----+