Anmerkung
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen, dich anzumelden oder die Verzeichnisse zu wechseln.
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen , die Verzeichnisse zu wechseln.
Azure Databricks unterstützt die Spaltenzuordnung für Delta Lake-Tabellen, die ausschließliche Metadatenänderungen ermöglicht, um Spalten als gelöscht oder umbenannt zu markieren, ohne Datendateien neu zu schreiben. Außerdem können Benutzer die Spalten von Delta-Tabellen mit Zeichen benennen, die in Parquet nicht zulässig sind, wie z. B. Leerzeichen, sodass Benutzer CSV- oder JSON-Daten direkt in Delta erfassen können, ohne Spalten aufgrund bisheriger Zeicheneinschränkungen umbenennen zu müssen.
Wichtig
Tabellen mit aktivierter Spaltenzuordnung können nur in Databricks Runtime 10.4 LTS und höher gelesen werden.
Wenn Sie ein Legacymuster verwenden, das auf Verzeichnisnamen zum Lesen von Delta-Tabellen basiert, kann die Aktivierung der Spaltenzuordnung ältere Arbeitslasten beeinträchtigen. Partitionierte Tabellen mit aktivierter Spaltenzuordnung verwenden zufällige Präfixe anstelle von Spaltennamen für Partitionsverzeichnisse. Sehen Sie sich an: Teilen Delta Lake und Parquet Partitionierungsstrategien?.
Das Aktivieren der Spaltenzuordnung für Tabellen kann nachgeschaltete Vorgänge unterbrechen, die auf einem Delta-Änderungsdatenfeed basieren. Siehe Ändern von Datenfeedeinschränkungen für Tabellen mit Spaltenzuordnung.
Das Aktivieren der Spaltenzuordnung für Tabellen könnte das Streaming von Lesevorgängen aus der Delta-Tabelle, die als Quelle dient, unterbrechen, einschließlich in den Lakeflow Spark Declarative Pipelines. Weitere Informationen finden Sie unter Streaming mit Spaltenzuordnung und Schemaänderungen.
Aktivieren der Spaltenzuordnung
Verwenden Sie den folgenden Befehl, um die Spaltenzuordnung zu aktivieren:
ALTER TABLE <table-name> SET TBLPROPERTIES (
'delta.columnMapping.mode' = 'name'
)
Für die Spaltenzuordnung sind die folgenden Delta-Protokolle erforderlich:
- Reader Version 2 oder höher.
- Writer Version 5 oder höher.
Siehe Delta Lake Featurekompatibilität und Protokolle.
Deaktivieren der Spaltenzuordnung
In Databricks Runtime 15.3 und höher können Sie den Befehl DROP FEATURE verwenden, um die Spaltenzuordnung aus einer Tabelle zu entfernen und das Tabellenprotokoll herabzustufen.
Wichtig
Durch das Ablegen der Spaltenzuordnung aus einer Tabelle werden die zufälligen Präfixe, die in Verzeichnisnamen für partitionierte Tabellen verwendet werden, nicht entfernt.
Weitere Informationen finden Sie unter Löschen eines Delta Lake-Tabellenfeatures und Herabstufen des Tabellenprotokolls.
Umbenennen einer Spalte
Hinweis
Verfügbar in Databricks Runtime 10.4 LTS und höher.
Wenn die Spaltenzuordnung für eine Delta-Tabelle aktiviert ist, können Sie eine Spalte umbenennen:
ALTER TABLE <table-name> RENAME COLUMN old_col_name TO new_col_name
Weitere Beispiele finden Sie unter Update Delta Lake table schema (Aktualisieren des Delta Lake-Tabellenschemas).
Löschen von Spalten (drop_columns)
Hinweis
Verfügbar in Databricks Runtime 11.3 LTS und höher.
Wenn die Spaltenzuordnung für eine Delta-Tabelle aktiviert ist, können Sie eine oder mehrere Spalten löschen:
ALTER TABLE table_name DROP COLUMN col_name
ALTER TABLE table_name DROP COLUMNS (col_name_1, col_name_2, ...)
Ausführlichere Informationen finden Sie unter Update Delta Lake table schema (Aktualisieren des Delta Lake-Tabellenschemas).
Unterstützte Zeichen in Spaltennamen
Wenn die Spaltenzuordnung für eine Delta-Tabelle aktiviert ist, können Sie Leerzeichen und eines dieser Zeichen in die Spaltennamen der Tabelle einschließen: ,;{}()\n\t=
Streaming mit Spaltenzuordnung und Schemaänderungen
Sie können einen Speicherort für die Schemanachverfolgung bereitstellen, um das Streaming von Delta-Tabellen mit aktivierter Spaltenzuordnung zu ermöglichen. Dadurch wird ein Problem behoben, das bewirkt, dass nicht additive Schemaänderungen zu unterbrochenen Datenströmen führen können.
Jeder Streaminglesevorgang aus einer Datenquelle muss über einen eigenen schemaTrackingLocation-Wert verfügen. Der angegebene schemaTrackingLocation muss sich in dem Verzeichnis befinden, das als checkpointLocation der Zieltabelle für den Streamingschreibvorgang angegeben ist. Für Streamingworkloads, die Daten aus mehreren Delta-Quelltabellen kombinieren, müssen Sie eindeutige Verzeichnisse innerhalb der checkpointLocation einzelnen Quelltabellen angeben.
Wichtig
Um die Spaltenzuordnung für einen aktuell ausgeführten Auftrag zu aktivieren, müssen Sie den Auftrag mindestens zweimal beenden und neu starten (d. a. zweimal neu starten).
- Der erste Neustart initialisiert die Spaltenzuordnung.
- Durch den zweiten Neustart können die Schemaänderungen wirksam werden.
Alle weiteren Schemaänderungen (z. B. Hinzufügen oder Ablegen von Spalten oder Ändern eines Spaltentyps) erfordern außerdem einen Neustart des Auftrags.
Die Option schemaTrackingLocation wird verwendet, um den Pfad für die Schemanachverfolgung anzugeben, wie im folgenden Codebeispiel gezeigt:
checkpoint_path = "/path/to/checkpointLocation"
(spark.readStream
.option("schemaTrackingLocation", checkpoint_path)
.table("delta_source_table")
.writeStream
.option("checkpointLocation", checkpoint_path)
.toTable("output_table")
)