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

Problema

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

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

Solución

Establezca la propiedad spark.sql.files.ignoreCorruptFiles de Apache Spark en true y, luego, lea los archivos con el esquema deseado. Se omiten los archivos que no coinciden con el esquema especificado. El conjunto de datos resultante solo contiene datos de los archivos que coinciden con el esquema especificado.

Establezca la propiedad de Spark con spark.conf.set:

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

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