如何处理具有不同架构的已损坏 Parquet 文件

问题

假设你有大量基本独立的 Parquet 文件,其中包含各种不同的架构。 你希望只读取与特定架构匹配的文件,而跳过不匹配的文件。

一种解决方案是按顺序读取文件、识别架构,并将 DataFrames 合并在一起。 但是,当有数十万个文件时,这种方法会不切实际。

解决方案

将 Apache Spark 属性 spark.sql.files.ignoreCorruptFiles 设置为 true,然后读取包含所需架构的文件。 与指定架构不匹配的文件会被忽略。 生成的数据集仅包含那些与指定架构匹配的文件中的数据。

使用 spark.conf.set 设置 Spark 属性:

spark.conf.set("spark.sql.files.ignoreCorruptFiles", "true")

或者,可以在 Spark 配置中设置此属性。