使用pyspark将文件名和文件modification/creation时间作为(键,值)对放入RDD

get filename and file modification/creation time as (key, value) pair into RDD using pyspark

我的文件夹中有很多文件(例如超过 100k),有些文件很小(不到 1kb),有些文件很大(例如几 MB)。

我想使用 pyspark 扫描这些文件夹下的所有文件,例如“C:\香”。例如,文件名是 文件夹 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 中,pair as (key, value) with key filename (e.g. C:\Xiang\filename1.txt) and value the modification time (e.g. 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))