Spark将列值拆分为多行

时间:2017-07-18 15:46:02

标签: sql scala apache-spark

我的问题是我有这样一张桌子:

------------------------
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 :(得分:3)

这是你可以做的,split带管道的字符串和explode使用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|
+---+---+---+

希望这有帮助!