Python 使用pyspark将文件名和文件修改/创建时间作为(键、值)对获取到RDD中

Python 使用pyspark将文件名和文件修改/创建时间作为(键、值)对获取到RDD中,python,file,apache-spark,pyspark,rdd,Python,File,Apache Spark,Pyspark,Rdd,我的文件夹中有许多文件(例如超过100k),一些文件较小(小于1kb),一些文件较大(例如数MB) 我想使用pyspark并扫描这些文件夹下的所有文件,例如“C:\Xiang”。例如,文件名是, 文件夹1: C:\Xiang\fold1\filename1.txt C:\Xiang\fold1\filename2.txt C:\Xiang\fold1\filename3.txt C:\Xiang\fold1\filename1_.meta.txt C:\Xiang\fold1\filename2

我的文件夹中有许多文件(例如超过100k),一些文件较小(小于1kb),一些文件较大(例如数MB)

我想使用pyspark并扫描这些文件夹下的所有文件,例如“C:\Xiang”。例如,文件名是, 文件夹1:

C:\Xiang\fold1\filename1.txt
C:\Xiang\fold1\filename2.txt
C:\Xiang\fold1\filename3.txt
C:\Xiang\fold1\filename1_.meta.txt
C:\Xiang\fold1\filename2_.meta.txt
...
“fold2”、“fold3”。。。具有相似的结构

我想扫描这些文件夹下的所有文件,并获得每个文件的修改时间。理想情况下,它可以保存到RDD中,配对为(key,value),key为文件名(例如C:\Xiang\filename1.txt),并为修改时间赋值(例如2020-12-16 13:40)。这样我就可以对这些文件执行进一步的操作,例如,按修改时间过滤并打开所选文件


有什么想法吗?

使用
pathlib
获取上次修改的时间并映射到文件名的rdd:

import os
import pathlib

rdd = sc.parallelize(os.listdir("C:\Xiang"))  # try slash if backslash doesn't work
rdd2 = rdd.keyBy(lambda x: x).map(lambda f: (f[0], pathlib.Path(f[1]).stat().st_mtime))