Vorgehensweise beim Verarbeiten von beschädigten Parquet-Dateien mit einem anderen Schema

Problem

Angenommen, Sie verfügen über eine große Liste von im Wesentlichen unabhängigen Parquet-Dateien mit einer Vielzahl verschiedener Schemas. Sie möchten nur die Dateien lesen, die einem bestimmten Schema entsprechen, und die Dateien überspringen, die nicht übereinstimmen.

Eine Lösung kann darin bestehen, die Dateien nacheinander zu lesen, das Schema zu identifizieren und zu DataFrames vereinen. Dieser Ansatz ist jedoch unpraktisch, wenn Hunderte von Tausenden von Dateien vorhanden sind.

Lösung

Legen Sie die Apache Spark -Eigenschaft spark.sql.files.ignoreCorruptFiles auf true fest, und lesen Sie dann die Dateien mit dem gewünschten Schema. Dateien, die nicht mit dem angegebenen Schema übereinstimmen, werden ignoriert. Das resultierende Dataset enthält nur Daten aus den Dateien, die mit dem angegebenen Schema übereinstimmen.

Legen Sie die Spark-Eigenschaft mit spark.conf.set fest:

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

Alternativ können Sie diese Eigenschaft in Ihrer Spark-Konfigurationfestlegen.