小编典典

Spark将列值拆分为多行

sql

我的问题是我有一个这样的表:

------------------------
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

我该怎么做呢?

谢谢


阅读 214

收藏
2021-04-07

共1个答案

小编典典

这就是您可以执行的操作,使用管道将字符串拆分并使用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|
+---+---+---+

希望这可以帮助!

2021-04-07