You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PySpark中从DataFrame的文件名列提取对应文件ID

PySpark 提取文件名6位数字编码的高效方案

针对大型PySpark DataFrame场景,优先使用原生内置函数实现,避免自定义UDF的额外性能开销,具体实现如下:

  • 导入内置正则提取函数
from pyspark.sql.functions import regexp_extract
  • 新增id列提取目标编码
# 正则匹配规则:捕获文件名末尾紧邻_PO.dat的6位数字,避免路径中数字干扰
df = df.withColumn("id", regexp_extract("filename", r"(\d{6})_PO\.dat$", 1))
  • 验证输出结果
df.show(truncate=False)

性能说明

regexp_extract是Spark原生向量化函数,直接在JVM执行层处理数据,完全规避了Python UDF带来的跨进程序列化/反序列化损耗,处理TB级大型数据集时性能比自定义UDF高5~10倍。

如果你的文件名规则存在变化,可灵活调整正则表达式:例如当6位数字是文件名中唯一的连续6位数字时,可简化正则为r"(\d{6})"适配更多场景。


内容的提问来源于stack exchange,提问作者Dcook

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 09:24:02