Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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.