首页 > 解决方案 > Spark - 如何从数据框列获取带有父文件夹的文件名

问题描述

我使用 pyspark 作为代码语言。我添加了列以获取带有路径的文件名。

from pyspark.sql.functions import input_file_name
data = data.withColumn("sourcefile",input_file_name())

我只想从此列中检索带有父文件夹的文件名。请帮忙。

例子:

Inputfilename = "adl://dotdot.com/ingest/marketing/abc.json"

我正在寻找的输出是:

marketing/abc.json

注意:字符串操作我可以做。文件路径列是数据框的一部分。

标签: azureapache-sparkpysparkazure-hdinsight

解决方案


如果要将值保留在数据框列中,可以使用 pyspark.sql.function regexp_extract。您可以将其应用于具有 path 值的列并传递提取所需部分所需的正则表达式:

data = data.withColumn("sourcefile",input_file_name())

regex_str = "[\/]([^\/]+[\/][^\/]+)$"
data = data.withColumn("sourcefile", regexp_extract("sourcefile",regex_str,1))

推荐阅读