如何从pyspark中的hdfs获取目录的文件名列表?

jar*_*fly 1 directory file path hdfs pyspark

我在hdfs中有一个目录,其中包含许多文件。我知道目录的路径,我正在尝试获取目录包含的那些文件名的列表。我该怎么办?

如果我有以下目录:

+dir/
    +f1
    +f2
    +fN
Run Code Online (Sandbox Code Playgroud)

我想获得如下列表:

[f1, f2, fN]
Run Code Online (Sandbox Code Playgroud)

Mar*_*usz 5

您可以在pyspark中使用HDFS(或任何其他兼容的Hadoop文件系统)API,并附带一些py4j魔术。要列出特定目录中的文件,请使用:

path = "/here/is/my/dir/"
fs = spark._jvm.org.apache.hadoop.fs.FileSystem.get(spark._jsc.hadoopConfiguration())
list_status = fs.listStatus(spark._jvm.org.apache.hadoop.fs.Path(path))
result = [file.getPath().getName() for file in list_status]
Run Code Online (Sandbox Code Playgroud)

list_status集合的元素的类型为FileSystem。使用此API,您可以获取文件元数据,例如目录,模式,所有者,组,ACL的信息,并使用这些信息过滤掉不需要的文件。