Spark 读取文件夹目录,文件名包含在结果数据框中

Spark read folder directory with file names included in resulting data frame

我想读取嵌套目录中的所有文件,并对每个文件执行一些转换。但是,我还需要来自文件实际路径的一些信息。这是当前的:

sdf = spark.read.text(path)
sdf.show()
+--------------------+
|               value|
+--------------------+
|                 ...|
+--------------------+
|                 ...|
+--------------------+

但是,我想要这样的东西:

sdf = spark.read.text(path, include_file_paths=True)
sdf.show()
+--------------------+---------+
|               value|     path|
+--------------------+---------+
|                 ...| /a/b.txt|
+--------------------+---------+
|                 ...| /c/d.txt|
+--------------------+---------+

这看起来应该是可行的,但我找不到任何描述它的资源。我错过了什么?

您可以使用 input_file_name 内置函数,如下所示:

sdf.withColumn("path", input_file_name)

此内置函数在任务级别执行。