Falha ao detetar codificação no JSON

Problema

O trabalho de faísca falha com uma exceção que contém a mensagem:

Invalid UTF-32 character 0x1414141(above 10ffff)  at char #1, byte #7)
At org.apache.spark.sql.catalyst.json.JacksonParser.parse

Causa

O leitor de fontes de dados JSON é capaz de detetar automaticamente a codificação de ficheiros JSON de entrada utilizando o BOM no início dos ficheiros. No entanto, a BOM não é obrigatória pela norma Unicode e proibida pelo RFC 7159, por exemplo, secção 8.1:

"... As implementações NÃO DEVEM adicionar uma marca de ordem byte ao início de um texto JSON."

Como consequência, em alguns casos, a Spark não é capaz de detetar corretamente o charset e ler o ficheiro JSON.

Solução

Para resolver o problema, desative o mecanismo de deteção automática do charset e defina explicitamente o conjunto de carvão utilizando a encoding opção:

.option("encoding", "UTF-16LE")