JSON'da kodlama algılama hatası

Sorun

Spark işi şu iletiyi içeren özel durumla başarısız oluyor:

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

Nedeni

JSON veri kaynağı okuyucusu, dosyaların başında BOM kullanarak giriş JSON dosyalarının kodlamasını otomatik olarak algılanabilir.

Ancak BOM, Unicode standardı tarafından zorunlu değildir ve RFC 7159 tarafından yasaklanmıştır.

Örneğin, bölüm 8.1:

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

Sonuç olarak Spark, karakter kümesine her zaman doğru şekilde bakamıyor ve JSON dosyasını okuyamıyor.

Çözüm

Sorunu çözmek için karakter kümesi otomatik algılama mekanizmasını devre dışı bırakma ve şu seçeneği kullanarak karakter kümesi açıkça encoding ayarlama:

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