Cómo controlar los archivos de Parquet dañados con esquemas diferentes

Problema

Supongamos que tiene una lista grande de archivos Parquet esencialmente independientes, con una variedad de esquemas diferentes. Quiere leer solo los archivos que coincidan con un esquema específico y omitir los archivos que no coinciden.

Una solución podría ser leer los archivos en secuencia, identificar el esquema y unir DataFrames entre sí. Sin embargo, este enfoque no es práctico cuando hay cientos de miles de archivos.

Solución

Establezca la Apache Spark en spark.sql.files.ignoreCorruptFiles true y, a continuación, lea los archivos con el esquema deseado. Los archivos que no coinciden con el esquema especificado se omiten. El conjunto de datos resultante solo contiene datos de los archivos que coinciden con el esquema especificado.

Establezca la propiedad Spark mediante spark.conf.set :

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

Como alternativa, puede establecer esta propiedad en la configuración de Spark.