Scala 如何转换Spark数据帧,使我的值成为列名?

Scala 如何转换Spark数据帧,使我的值成为列名?,scala,apache-spark,apache-spark-sql,Scala,Apache Spark,Apache Spark Sql,我不确定用什么好方法来表达这个问题,但举个例子会有所帮助。以下是我拥有的数据框,包括以下列:名称、类型和计数: +------+------+-------+ |名称|类型|计数| +------+------+-------+ |a | 0 | 5| |a | 1 | 4| |a | 5 | 5| |a | 4 | 5| |a | 2 | 1| |b | 0 | 2| |b | 1 | 4| |b | 3 | 5| |b | 4 | 5| |b | 2 | 1| |c | 0 | 5| |c

我不确定用什么好方法来表达这个问题,但举个例子会有所帮助。以下是我拥有的数据框,包括以下列:名称、类型和计数:

+------+------+-------+
|名称|类型|计数|
+------+------+-------+
|a | 0 | 5|
|a | 1 | 4|
|a | 5 | 5|
|a | 4 | 5|
|a | 2 | 1|
|b | 0 | 2|
|b | 1 | 4|
|b | 3 | 5|
|b | 4 | 5|
|b | 2 | 1|
|c | 0 | 5|
|c |…||
+------+------+-------+
我希望得到一个新的数据帧,其结构如下,其中类型列值已成为新列:

+------+---+-----+---+---+---+---+

|命名| 0 | 1 | 2 | 3 | 4 | 5 |使用Spark中的
pivot
功能执行此操作

val df2 = df.groupBy("Name").pivot("Type").sum("Count")
在这里,如果两行的名称和类型相同,则只需将计数值相加,但也可以进行其他聚合

使用问题中的示例数据时产生的数据帧:

+----+---+----+----+----+----+----+
|Name|  0|   1|   2|   3|   4|   5|
+----+---+----+----+----+----+----+
|   c|  5|null|null|null|null|null|
|   b|  2|   4|   1|   5|   5|null|
|   a|  5|   4|   1|null|   5|   5|
+----+---+----+----+----+----+----+