将字符串拆分为多行,每行一个字符

6rvt4ljy  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(425)

我想把一列中的一个单词分成多行,每行只有一个字符。下面是一个小例子:

Id           Name          StartDate          EndDate
1            raj           2017-07-05          2008-08-06

预期结果如下:

Id           Name          StartDate          EndDate
1            r           2017-07-05          2008-08-06
1            a           2017-07-05          2008-08-06
1            j           2017-07-05          2008-08-06
798qvoo8

798qvoo81#

首先将字符串拆分为一个列表,然后使用 explode . 请注意 filter 必须使用,否则一行将有一个空字符串。

val df = spark.createDataFrame(Seq((1, "raj"), (2, "test"))).toDF("Id", "Name")
val df2 = df.withColumn("Name", explode(split($"Name", ""))).filter($"Name" =!= "")

这将为您提供:

+---+----+
| Id|Name|
+---+----+
|  1|   r|
|  1|   a|
|  1|   j|
|  2|   t|
|  2|   e|
|  2|   s|
|  2|   t|
+---+----+

注意,对于旧版本的spark(早于2.0.0),请使用 !== 而不是 =!= 在检查不平等时。

相关问题