Del via


Kendt problem – Py4JJavaError, når deltatabellen gemmes på Fabric 1.3

Py4JJavaError ved lagring af Delta-tabel på Spark 3.5 (Fabric 1.3) på grund af ikke-syndebukede kontroltegn

Når du gemmer data i en Delta-tabel i Spark, kan der opstå en fejl, hvis dataene indeholder kontroltegn med Unicode-kodepunkter mellem 20 og 32. I dette scenarie skriver et Spark-job poster, der indeholder specialkontroltegn (f.eks. ASCII-kode 20, "\u0014") til en Delta-tabel. Under skrivehandlingen forsøger Spark at serialisere data i JSON-format for Delta-tabeltransaktionsloggen. Unescaped-kontroltegn medfører, at JSON-serialiseringsfunktionen mislykkes, hvilket udløser JsonParseException. Dette problem er specifikt for Fabric 1.3. Problemet er ikke observeret på Fabric 1.1 eller 1.2.

status: åbn

produktoplevelse: Data Engineering

Symptomer

Du kan se en Py4JJavaError og følgende JsonParseException (eller en lignende variant): 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øsninger og løsninger

Før du gemmer en tabel med specialtegnene, skal du angive følgende Spark-konfiguration for at undgå at indsamle statistikker fra Arrow, hvilket kan forhindre dette problem med ikke-syndebukede kontroltegn: spark.conf.set("spark.microsoft.delta.stats.collect.fromArrow", "false"). Denne indstilling sikrer, at Spark ikke forsøger at indsamle statistikker, der indeholder disse problematiske tegn, og undgår fejlen til fortolkning af kontroltegn.

Næste trin