Como processar ficheiros Parquet danificados com um esquema diferente

Problema

Digamos que tem uma grande lista de ficheiros Parquet essencialmente independentes, com uma variedade de esquemas diferentes. Só quer ler os ficheiros que correspondem a um esquema específico e saltar os ficheiros que não correspondem.

Uma solução poderia ser ler os ficheiros em sequência, identificar o esquema, e DataFrames uni-lo juntos. No entanto, esta abordagem é impraticável quando existem centenas de milhares de ficheiros.

Solução

Desaperte a propriedade Apache Spark spark.sql.files.ignoreCorruptFiles true e, em seguida, leia os ficheiros com o esquema pretendido. Os ficheiros que não correspondem ao esquema especificado são ignorados. O conjunto de dados resultante contém apenas dados desses ficheiros que correspondem ao esquema especificado.

Desaperte a propriedade Spark spark.conf.set utilizando:

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

Em alternativa, pode definir esta propriedade na sua configuração Spark.