Neúspěšná detekce kódování v JSON

Problém

Úloha Sparku se nezdařila s výjimkou, která obsahuje tuto zprávu:

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

Příčina

Čtečka zdroje dat JSON dokáže automaticky detekovat kódování vstupních souborů JSON pomocí kusovníku na začátku souborů. Kusovník ale není povinný standardem Unicode a zakázaný dokumentem RFC 7159 , například oddíl 8,1:

"... Implementace nesmí do začátku textu JSON přidat značku pořadí bajtů.

V důsledku toho v některých případech Spark nedokáže správně rozpoznat znakovou sadu a číst soubor JSON.

Řešení

Problém vyřešíte tak, že zakážete mechanismus automatického zjišťování charset a explicitně nastavíte znakovou sadu pomocí encoding Možnosti:

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