Не удалось обнаружить кодировку в JSON

Проблема

Задание Spark завершается с исключением, содержащим сообщение:

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

Причина

Модуль чтения источника данных JSON может автоматически определять кодировку входных JSON-файлов, используя BOM в начале файлов.

Однако спецификация не является обязательной по стандарту Unicode и запрещена RFC 7159.

Например, раздел 8,1:

...Implementations MUST NOT add a byte order mark to the beginning of a JSON text.

Как следствие, Spark не всегда может правильно определить набор символов и прочитать JSON-файл.

Решение

Чтобы устранить эту проблему, отключите механизм автоматического обнаружения charset и явно задайте кодировку с помощью encoding параметра:

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