فشل الكشف عن الترميز في 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 الإدخال باستخدام شجرة المواد في بداية الملفات.

ومع ذلك، فإن شجرة المواد ليست إلزامية وفقا لمعيار Unicode ويحظرها RFC 7159.

على سبيل المثال، القسم 8.1:

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

نتيجة لذلك، Spark غير قادر دوما على الكشف عن charset بشكل صحيح وقراءة ملف JSON.

حل

لحل المشكلة، قم بتعطيل آلية الكشف التلقائي charset وتعيين مجموعة الأحرف بشكل صريح باستخدام encoding الخيار:

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