首页 > 解决方案 > 如何在scala中将包含管道分隔字符串的列拆分为两列

问题描述

我在表中有两个拆分管道分隔的列

column_name
name-MARYAM BEGUM | MOHD AIJAZUR RAHMAN
fathers_name-AIJAZUR RAHMAN | MOHD HABEEB SAB

当我使用爆炸拆分功能时,它会产生 4 行,因为我想要两行

name                                              fathers name
|SYED YOUSUF                                     |JANI MIYA             |
| MOHAMMED MUBEEN UL ALI                         | MOHAMMED SHAFI UL ALI|

标签: scalaapache-spark

解决方案


您可以使用withColumn从现有列值创建新列。您可以使用 . 从列中提取数据org.apache.spark.sql.functions.regexp_extract。您还可以使用org.apache.spark.sql.functions.substringorg.apache.spark.sql.functions.instr功能的组合等。请查看所有可用的功能

//lets say "column_name" has concatenated data

df.withColumn($"name", regexp_extract($"column_name", <expression to extract name>, <group index>))
df.withColumn($"father_name", regexp_extract($"column_name", <expression to extract fathers name>,<group index>))


推荐阅读