scala - spark scala中lastIndexOf的子字符串
问题描述
我的数据框中有一列包含文件名
test_1_1_1_202012010101101
我想在 lastIndexOf(_) 之后获取字符串我尝试了这个并且它正在工作
val timestamp_df =file_name_df.withColumn("timestamp",split(col("filename"),"_").getItem(4))
但我想让它更通用,这样如果将来文件名中可以有任意数量的 _ ,它可以在 lastIndexOf _ 的基础上拆分它
val timestamp_df =file_name_df.withColumn("timestamp", expr("substring(filename, length(filename)-15,17)"))
这也不是通用的,因为字符长度可能会有所不同。
谁能帮助我将 lastIndexOf 函数与 withColumn 一起使用。
解决方案
您可以使用element_at
函数 withsplit
来获取数组的最后一个元素。
Example:
df.withColumn("timestamp",element_at(split(col("filename"),"_"),-1)).show(false)
+--------------------------+---------------+
|filename |timestamp |
+--------------------------+---------------+
|test_1_1_1_202012010101101|202012010101101|
+--------------------------+---------------+
推荐阅读
- mysql - SQL通过两个值连接两个表,其中一个值在较长的文本内
- flutter - 在 Android Studio 上运行 Flutter 代码时出现以下错误。(视窗 10)
- python - Csv 未加载 int BIgquery 问题,“\ 双引号和分隔符重复两次
- javascript - Javascript:为什么 setCustomValidaty 在第一次提交时没有出现,但在第二次提交时出现了?
- javascript - contentEditable getSelection.anchorNode 因来源而异
- javascript - 验证后如何删除模态
- ios - iOS TLS/SSL Pinning 在 Info.plist 中使用 NSRequiresCertificateTransparency 键
- websphere - IBM WebSphere 更新
- android - 使用 esp32 接入点流式传输 UDP 数据包会导致大量数据包丢失
- python - 有没有办法在python中读取HTML文件并传递参数并通过邮件发送?