Freigeben über


Bekanntes Problem – Py4JJavaError beim Speichern der Delta-Tabelle in Fabric 1.3

Py4JJavaError beim Speichern der Delta-Tabelle auf Spark 3.5 (Fabric 1.3) Aufgrund von nicht gescapeten Steuerzeichen

Wenn Sie Daten in einer Delta-Tabelle in Spark speichern, kann ein Fehler auftreten, wenn die Daten Steuerzeichen mit Unicode-Codepunkten zwischen 20 und 32 enthalten. In diesem Szenario schreibt ein Spark-Auftrag Datensätze, die spezielle Steuerzeichen enthalten (z. B. ASCII-Code 20, "\u0014") in eine Delta-Tabelle. Während des Schreibvorgangs versucht Spark, Daten im JSON-Format für das Delta-Tabellentransaktionsprotokoll zu serialisieren. Nicht gescapete Steuerelementzeichen führen dazu, dass der JSON-Serializer fehlschlägt, wodurch die JsonParseException ausgelöst wird. Dieses Problem ist spezifisch für Fabric 1.3. Das Problem wird in Fabric 1.1 oder 1.2 nicht beobachtet.

Status: Offen

Produkterfahrung: Datentechnik

Symptome

Sie sehen einen Py4JJavaError und die folgende JsonParseException (oder eine ähnliche Variante): com.fasterxml.jackson.core.JsonParseException: Illegal unquoted character ((CTRL-CHAR, code 20)): has to be escaped using backslash to be included in string value….

Lösungen und Lösungswege

Bevor Sie eine Tabelle mit den Sonderzeichen speichern, legen Sie die folgende Spark-Konfiguration fest, um das Sammeln von Statistiken aus Arrow zu vermeiden, was dieses Problem mit unescaped Steuerzeichen verhindern kann: spark.conf.set("spark.microsoft.delta.stats.collect.fromArrow", "false") Diese Einstellung stellt sicher, dass Spark nicht versucht, Statistiken zu sammeln, die diese problematischen Zeichen enthalten, und verhindert den Analysefehler des Steuerelementzeichens.

Nächste Schritte