異なるスキーマで破損した Parquet ファイルを処理する方法How to handle corrupted Parquet files with different schema

問題Problem

たとえば、基本的に独立した Parquet ファイルのリストが多数あり、さまざまなスキーマを使用しているとします。Let’s say you have a large list of essentially independent Parquet files, with a variety of different schemas. 特定のスキーマに一致するファイルだけを読み取り、一致しないファイルをスキップします。You want to read only those files that match a specific schema and skip the files that don’t match.

1つの解決策として、ファイルを順番に読み取り、スキーマを識別し、それらをまとめることができ DataFrames ます。One solution could be to read the files in sequence, identify the schema, and union the DataFrames together. ただし、この方法は、何千ものファイルがある場合は現実的ではありません。However, this approach is impractical when there are hundreds of thousands of files.

解決策Solution

Apache Spark プロパティをに設定し、目的のスキーマを使用して spark.sql.files.ignoreCorruptFiles true ファイルを読み取ります。Set the Apache Spark property spark.sql.files.ignoreCorruptFiles to true and then read the files with the desired schema. 指定したスキーマに一致しないファイルは無視されます。Files that don’t match the specified schema are ignored. 結果のデータセットには、指定したスキーマに一致するファイルのデータのみが含まれます。The resultant dataset contains only data from those files that match the specified schema.

次のものを使用して Spark プロパティを設定し spark.conf.set ます。Set the Spark property using spark.conf.set:

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

または、 Spark 構成でこのプロパティを設定することもできます。Alternatively, you can set this property in your Spark configuration.