如何改进 Spark 从 s3 读取(列出)25k 小文件

How to improve reading (listing) 25k of small files from s3 by Spark

我在 Minio S3 上有 25,000 个小文件需要解析。

df = spark.read.text("s3a://bucket/*/*/file*.txt").withColumn("path", input_file_name())
# parsing
# writing to parquet

解析和写入 parquet 的速度很快。但是 s3 api 列出文件花了大约 40 分钟。 问题,如何让listing更快?

我使用 Spark 3.1.1 和 Hadoop 3.2。

这真快:

    df = spark.read.option("pathGlobFilter", "file*.txt"). \
    option("recursiveFileLookup", "true"). \
    text(f"s3a://bucket/").withColumn("path", input_file_name())