使用scala spark将单列转换为行
我需要转换下表中的值,理想情况下,所有列C4行的值都将变成列,并分别显示指示符使用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
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!你可以通过添加到目前为止你已经尝试过的代码来改进你的帖子(这将使它更有可能得到有用的答案)。没有任何代码-人们很难知道你到底遗漏了什么,而且通常情况下,没有代码的问题会被关闭或否决,这就是我要找的。谢谢。如果这解决了你的问题,你能接受答案来结束问题吗?