異なるスキーマで破損した 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.ignoreCorruptFilestrue に設定し、目的のスキーマを使用してファイルを読み取ります。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.conf.setを使用して Spark プロパティを設定します。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.