scala - Spark Scala 带分隔符的子字符串
问题描述
我是 Spark 和 Scala 的新手,我想问你一个问题:
我的数据库中有一个 city 字段(我已经将它加载到 DataFrame 中)具有这种模式:"someLetters" + " - " + id + ')'.
示例:
ABDCJ - 123456)
AGDFHBAZPF - 1234567890)
字段的大小不固定,id
可以是 6 位或 10 位的整数。所以,我想做的是id
在一个名为city_id
.
具体来说,我想从数字的最后一个字符“)”开始,忽略它并提取整数,直到找到一个空格。然后断。
我已经尝试使用withColumn
or a regex
or evensubString index
但我感到困惑,因为它们基于我无法在此处使用的索引。
我怎样才能解决这个问题?
解决方案
从数字的最后一个字符')'开始,忽略它并提取整数,直到我找到一个空格
这可以使用正则表达式模式来完成.*?(\\d+)\\)$
,其中\\)$
匹配)
字符串末尾的 ,然后用 捕获数字\\d+
,并将其提取为新列;注意.*?
惰性(由于?
)匹配一个字符串,直到(\\d+)\\)$
找到模式:
df.withColumn("id", regexp_extract($"city", ".*?(\\d+)\\)$", 1)).show
+--------------------+----------+
| city| id|
+--------------------+----------+
| ABDCJ - 123456)| 123456|
|AGDFHBAZPF - 1234...|1234567890|
+--------------------+----------+
推荐阅读
- azure-iot-edge - 启动 VM 后 IoT Edge 运行时错误 400 已关闭 1 个月以上
- docker - 无法通过 docker-compose 使用 Big Data Europe 访问 WebHDFS
- python - 安装 anaconda3 后,黑色格式化程序在 VSCode 中不起作用
- git - 将 HEAD 重置为先前的提交并使用 PR 推送到默认分支的顶部?
- postgresql - 将数据(数组)导入 Quicksight
- reactjs - 从 React 函数内部导出函数
- reactjs - Git Hub - 致命:提交输出中的意外序列
- android - SQLiteDatabase类在编码IDE中无法解析,如何设置?
- php - 单击 jquery-tabledit 中的编辑按钮时如何启用选择框?
- scala - Scala 中的 Future[Try[Book]] vs Future[Book]?