Fehler beim Erkennen der Codierung in JSONFailure to detect encoding in JSON

ProblemProblem

Der Spark-Auftrag schlägt mit einer Ausnahme fehl, die die Meldung enthält:Spark job fails with an exception containing the message:

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

UrsacheCause

Der JSON-Datenquellen Leser kann die Codierung der JSON-Eingabedateien mithilfe von BOM am Anfang der Dateien automatisch erkennen.The JSON data source reader is able to automatically detect encoding of input JSON files using BOM at the beginning of the files. BOM ist jedoch nicht durch den Unicode-Standard obligatorisch und unzulässig durch RFC 7159 , z. b. Abschnitt 8,1:However, BOM is not mandatory by Unicode standard and prohibited by RFC 7159 for example, section 8.1:

"... Implementierungen dürfen am Anfang eines JSON-Texts keine Byte Reihenfolge Markierung hinzufügen. "“…Implementations MUST NOT add a byte order mark to the beginning of a JSON text.”

Folglich kann Spark in einigen Fällen das CharSet nicht ordnungsgemäß erkennen und die JSON-Datei lesen.As a consequence, in some cases Spark is not able to detect the charset correctly and read the JSON file.

LösungSolution

Um das Problem zu beheben, deaktivieren Sie den Mechanismus für die automatische Erkennung von Zeichensätzen, und legen Sie das Zeichensatz mithilfe der Option explizit fest encoding :To solve the issue, disable the charset auto-detection mechanism and explicitly set the charset using the encoding option:

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