sql-spark将列值拆分为多行


0

我的问题是我有一张这样的 table:

------------------------
A  B    C
------------------------
a1 b2   c1|c2|c3|c4

c1 c2 c3 c4是用分隔的一个值。

我的最终结果应该是这样的:

---------
A  B   C
---------
a1 b1  c1
a1 b1  c2
a1 b1  c3
a1 b1  c4

我该怎么做?

谢谢

1 答案

0

这是您可以做的,用管道拆分字符串并使用spark函数分解数据。

import org.apache.spark.sql.functions._
import spark.implicits._

val df = Seq(("a1", "b1", "c1|c2|c3|c4")).toDF("A", "B", "C")

df.withColumn("C", explode(split($"C", "|"))).show

输出:

+---+---+---+
|  A|  B|  C|
+---+---+---+
| a1| b1| c1|
| a1| b1| c2|
| a1| b1| c3|
| a1| b1| c4|
+---+---+---+

希望这有帮助!


我来回答