scala - 如何在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|
解决方案
您可以使用withColumn
从现有列值创建新列。您可以使用 . 从列中提取数据org.apache.spark.sql.functions.regexp_extract
。您还可以使用org.apache.spark.sql.functions.substring
和org.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>))
推荐阅读
- unity3d - 有没有办法使用 vuforia 统一执行多个 3d 对象识别?
- javascript - Lodash 过滤和删除类似 java 流
- android - FFMPEG 视频缩略图
- python - 为什么从我的程序中删除多处理会在 math.sin() 函数中引发“需要浮点数”错误?
- vuejs2 - 有没有办法将实例添加到 vue-test-utils 中已安装的 Vue 组件?
- swift - 使用通用函数从云记录(或其他外部源)填充对象
- java - ResourceBundle getLocale().getDisplayLanguage() 返回空字符串
- ios - 在 Swift 中使用 NSCache
- java - 使用 Java JDBC 连接到 Hive 时出现 NoSuchMethodError
- php - 从变量渲染 PHP HTML 页面