使用scala spark将单列转换为行

使用scala spark将单列转换为行,scala,apache-spark,Scala,Apache Spark,我需要转换下表中的值,理想情况下,所有列C4行的值都将变成列,并分别显示指示符 C1 C2 C3 C4 a b c 9 x y z 6 A B C 3 预期产出: C1 c2 c3 9 6 3 a b c 1 0 0 x v z 0 1 0 A B C 0 0 1 我想用Scala和spark解决这个问题。 spark版本2.1.1 Scala 2.11.8版本如果我正确理解了问题,您可以按如下方式使用groupBy/pivot: val df = Seq

我需要转换下表中的值,理想情况下,所有列C4行的值都将变成列,并分别显示指示符

C1 C2 C3 C4
a  b  c  9
x  y  z  6
A  B  C  3
预期产出:

C1 c2 c3 9 6 3
a  b  c  1 0 0
x  v  z  0 1 0
A  B  C  0 0 1
我想用Scala和spark解决这个问题。 spark版本2.1.1
Scala 2.11.8版本

如果我正确理解了问题,您可以按如下方式使用
groupBy/pivot

val df = Seq(
  ("a", "b", "c", 9),
  ("x", "y", "z", 6),
  ("A", "B", "C", 3)
).toDF("C1", "C2", "C3", "C4")

df.groupBy("C1", "C2", "C3").
  pivot("C4").agg(count(struct("C1", "C2", "C3"))).
  na.fill(0).
  show
// +---+---+---+---+---+---+
// | C1| C2| C3|  3|  6|  9|
// +---+---+---+---+---+---+
// |  x|  y|  z|  0|  1|  0|
// |  a|  b|  c|  0|  0|  1|
// |  A|  B|  C|  1|  0|  0|
// +---+---+---+---+---+---+

欢迎来到StackOverflow!你可以通过添加到目前为止你已经尝试过的代码来改进你的帖子(这将使它更有可能得到有用的答案)。没有任何代码-人们很难知道你到底遗漏了什么,而且通常情况下,没有代码的问题会被关闭或否决,这就是我要找的。谢谢。如果这解决了你的问题,你能接受答案来结束问题吗?