Delta Lake-Schemaüberprüfung

Delta Lake überprüft automatisch, ob das Schema des geschriebenen DataFrame-Elements mit dem Schema der Tabelle kompatibel ist. Delta Lake ermittelt anhand der folgenden Regeln, ob ein Schreibvorgang aus einem DataFrame in eine Tabelle kompatibel ist:

  • Alle DataFrame-Spalten müssen in der Zieltabelle vorhanden sein. Wenn Spalten im DataFrame nicht in der Tabelle vorhanden sind, wird eine Ausnahme ausgelöst. Spalten, die in der Tabelle, aber nicht im DataFrame vorhanden sind, werden auf NULL festgelegt.
  • DataFrame-Spaltendatentypen müssen mit den Spaltendatentypen in der Zieltabelle übereinstimmen. Stimmen sie nicht überein, wird eine Ausnahme ausgelöst.
  • DataFrame-Spaltennamen dürfen sich nicht nur in der Groß-/Kleinschreibung unterscheiden. Dies bedeutet, dass Spalten wie „Foo“ und „foo“ nicht in derselben Tabelle definiert werden können. Sie können Spark zwar im Modus mit relevanter oder irrelevanter (Standard) Groß-/Kleinschreibung verwenden, aber bei Parquet wird beim Speichern und Zurückgeben von Spalteninformationen die Groß-/Kleinschreibung berücksichtigt. Delta Lake behält beim Speichern des Schemas die Groß-/Kleinschreibung bei, berücksichtigt sie jedoch nicht. Diese Einschränkung dient dazu, potenzielle Fehler, Datenbeschädigungen oder Probleme mit Datenverlust zu vermeiden.

Delta Lake unterstützt DDL, um neue Spalten explizit hinzuzufügen und das Schema automatisch aktualisieren zu können.

Wenn Sie in Kombination mit dem Anfügemodus andere Optionen angeben, z. B. partitionBy, überprüft Delta Lake, ob sie übereinstimmen, und löst bei einem Konflikt einen Fehler aus. Wenn partitionBy nicht vorhanden ist, folgen Anfügungen automatisch der Partitionierung der vorhandenen Daten.

Hinweis

Die INSERT-Syntax ermöglicht die Erzwingung von Schemas und unterstützt die Schemaentwicklung. Wenn der Datentyp einer Spalte nicht sicher in den Datentyp einer Delta-Tabelle umgewandelt werden kann, wird eine Laufzeitausnahme ausgelöst. Wenn die Schemaentwicklung aktiviert ist, können neue Spalten als letzte Spalten des Schemas (oder geschachtelte Spalten) vorhanden sein, damit das Schema weiterentwickelt werden kann.

Schemaüberprüfung für Delta Lake-Merge

merge überprüft automatisch, ob das Schema der durch „insert“- und „update“-Ausdrücke generierten Daten mit dem Schema der Tabelle kompatibel ist. Dabei werden die folgenden Regeln verwendet, um zu ermitteln, ob der merge-Vorgang kompatibel ist:

  • Bei update- und insert-Aktionen muss die Delta-Zieltabelle die angegebenen Zielspalten enthalten.
  • Bei updateAll- und insertAll-Aktionen muss das Quelldataset alle Spalten der Delta-Zieltabelle enthalten. Das Quelldataset kann zusätzliche Spalten enthalten, die ignoriert werden.
  • Wenn sich der Datentyp, der von den Ausdrücken zur Erzeugung der Zielspalten generiert wird, von den entsprechenden Spalten in der Delta-Zieltabelle unterscheidet, versucht merge bei allen Aktionen, sie in die Typen in der Tabelle umzuwandeln.

Weitere Informationen finden Sie unter Automatische Schemaentwicklung für Delta Lake-Merge.