Verwaltete Tabellen im Unity-Katalog für Delta Lake und Apache Iceberg

Von Unity Catalog verwaltete Tabellen sind in Azure Databricks für Delta Lake und Apache Iceberg der standardmäßige und empfohlene Tabellentyp. Unity Catalog verwaltet alle Verantwortlichkeiten für Lese-, Schreib-, Speicher- und Optimierungsaufgaben. Siehe Konvertieren einer externen Delta Lake-Tabelle in eine verwaltete Unity-Katalogtabelle.

Datendateien für verwaltete Tabellen werden im Schema oder Katalog gespeichert, das sie enthält. Weitere Informationen finden Sie unter Angeben eines verwalteten Speicherorts in Unity Catalog.

Databricks empfiehlt die Verwendung von verwalteten Tabellen, um die folgenden Vorteile im Vergleich zu externen und ausländischen Tabellen zu nutzen:

  • Reduzierte Speicher- und Berechnungskosten.
  • Schnellere Abfrageleistung für alle Clienttypen.
  • Automatische Tabellenwartung und -optimierung.
  • Sicherer Zugriff für externe Clients über offene APIs.
  • Unterstützung für Delta Lake- und Apache Iceberg-Formate.
  • Automatische Upgrades auf die neuesten Plattformfeatures.

Sie können mit verwalteten Tabellen in allen Sprachen und Produkten arbeiten, die in Azure Databricks unterstützt werden. Sie benötigen bestimmte Berechtigungen, um verwaltete Tabellen zu erstellen, zu aktualisieren, zu löschen oder abzufragen. Weitere Informationen finden Sie unter Verwalten von Berechtigungen in Unity Catalog.

Note

Diese Seite beschreibt nur verwaltete Tabellen im Unity-Katalog. Bei verwalteten Tabellen im Legacy-Hive-Metaspeicher siehe Datenbankobjekte im Legacy-Hive-Metaspeicher.

Vorteile verwalteter Tabellen im Unity-Katalog

Verwaltete Unity-Katalog-Tabellen optimieren Speicherkosten und Abfragegeschwindigkeiten und ermöglichen die Interoperabilität mit Drittanbietertools für Delta Lake und Apache Iceberg. Um die Datenverwaltung und -leistung zu vereinfachen, verwenden diese verwalteten Tabellen KI-gestützte Technologien, z. B. Dateigrößenkomprimierung und intelligente Statistikensammlung.

Verwaltete Tabellen unterstützen die Interoperabilität, indem der Zugriff von Delta Lake- und Apache Iceberg-Clients ermöglicht wird. Siehe Zugriff auf Databricks-Daten mithilfe externer Systeme.

Die folgenden Features gelten nur für verwaltete Tabellen im Unity-Katalog und sind für externe Tabellen und Fremdtabellen nicht verfügbar:

Feature Benefits Konfiguration
Katalog-Commits Ermöglicht Transaktionen mit mehreren Anweisungen über Tabellen hinweg, eine schnellere Abfrageplanung durch die direkte Bereitstellung von Metadaten aus Unity Catalog, durchsetzbare Änderungen an Schemata und Constraints sowie sichere Schreibvorgänge aus externen Engines. Standardmäßig deaktiviert.
Legen Sie zum Aktivieren die delta.feature.catalogManaged Tabelleneigenschaft fest. Siehe Katalog-Commits aktivieren.
Prädiktive Optimierung Optimiert Das Datenlayout und die Berechnung mithilfe von KI automatisch, ohne dass manuelle Wartungsvorgänge erforderlich sind. Databricks empfiehlt, eine predictive Optimierung für alle verwalteten Tabellen zu ermöglichen, um Speicher- und Berechnungskosten zu reduzieren.
Wird automatisch ausgeführt:
Standardmäßig für alle neuen Konten aktiviert, die am oder nach dem 11. November 2024 erstellt wurden. Bei aktuellen Konten ermöglicht Azure Databricks standardmäßig eine vorausschauende Optimierung. Überprüfen Sie, ob die Vorhersageoptimierung aktiviert ist.
Informationen zum Konfigurieren finden Sie unter "Aktivieren der prädiktiven Optimierung".
Transaktionen mit mehreren Anweisungen Ermöglicht ihnen das Ausführen mehrerer SQL-Anweisungen in einer oder mehreren Tabellen als einzelnes atomisches Commit mit ACID-Garantien. Alle Veränderungen gelingen entweder gemeinsam oder werden gemeinsam rückgängig gemacht. Wird für gespeicherte Prozeduren und SQL-Skripting in unternehmenskritischen Lagerarbeitslasten verwendet.
Transaktionen, die in verwaltete Delta Lake-Tabellen schreiben, befinden sich in der öffentlichen Vorschau.
Transaktionen, die in verwaltete Apache Iceberg-Tabellen schreiben, befinden sich in der privaten Vorschau.
Standardmäßig deaktiviert.
Verwenden Sie BEGIN ATOMIC ... END; für nicht-interaktive Transaktionen oder BEGIN TRANSACTION; ... COMMIT; für interaktive Transaktionen. Siehe Transaktionsmodi.
Automatische Flüssigkeitsclusterung Bei Tabellen mit prädiktiver Optimierung wählt liquides Clustering intelligent Clustering-Schlüssel aus und aktualisiert sie automatisch, wenn sich Abfragemuster ändern, um die Leistung und niedrigere Kosten zu verbessern. Standardmäßig deaktiviert.
Informationen zum Konfigurieren finden Sie unter "Aktivieren der Flüssigclusterung".
Zwischenspeichern von Metadaten Das Zwischenspeichern von Transaktionsmetadaten im Arbeitsspeicher verbessert die Abfrageleistung, indem Anforderungen an das in der Cloud gespeicherte Transaktionsprotokoll minimiert werden. Standardmäßig aktiviert. Nicht konfigurierbar.
Volltext-Suchindizes Beschleunigt Teilzeichenfolgen- und Schlüsselwortsuchvorgänge in Textspalten mit den search und isearch Funktionen. Wenn ein Index angewendet wird, überspringt Azure Databricks Dateien, die keine übereinstimmenden Zeilen enthalten können, und reduziert die Menge der gescannten Daten.
Befindet sich in der Beta-Phase und erfordert Databricks Runtime 18.2 oder höher.
Standardmäßig deaktiviert.
Erstellen mit CREATE SEARCH INDEX.
Automatische Dateilöschung nach einem DROP TABLE Befehl Wenn Sie eine verwaltete Tabelle löschen, löscht Azure Databricks die Datendateien im Cloudspeicher nach Ablauf der Aufbewahrungsfrist (standardmäßig 7 Tage), wodurch die Speicherkosten reduziert werden. Bei externen Tabellen müssen Sie die Dateien manuell aus Ihrem Speicher-Bucket löschen. Standardmäßig aktiviert. Sie können den Wiederherstellungszeitraum auf Katalog- oder Schemaebene konfigurieren. Siehe Ablegen einer verwalteten Tabelle.

Zugreifen auf Datenbricks-Daten mithilfe externer Systeme

Verwaltete Tabellen unterstützen die Interoperabilität , indem der Zugriff von Delta Lake- und Apache Iceberg-Clients ermöglicht wird.

Durch offene APIs und die Bereitstellung von Anmeldeinformationen ermöglicht Unity Catalog externen Engines wie Trino, DuckDB, Apache Spark und Daft sowie in Iceberg-REST-Kataloge integrierten Engines wie Dremio den Zugriff auf verwaltete Tabellen. Für externe Clients, die offene APIs nicht unterstützen, können Sie den Kompatibilitätsmodus verwenden, um verwaltete Tabellen mit einem beliebigen Delta Lake- oder Apache Iceberg-Client zu lesen. OpenSharing, ein Open Source-Protokoll, ermöglicht die sichere, geregelte Datenfreigabe mit externen Partnern und Plattformen.

Eine Liste der unterstützten externen Engines finden Sie in den Integrationen , oder überprüfen Sie die Dokumentation Ihres Moduls, wenn sie nicht in dieser Liste enthalten ist.

Die folgenden geöffneten APIs ermöglichen externen Systemen den Zugriff auf verwaltete Tabellen im Unity-Katalog:

  • Die Unity-REST-API verfügt über Lese-, Schreib- und Erstellungszugriff für Delta Lake-Clients für verwaltete Delta Lake-Tabellen.
  • Iceberg REST Catalog (IRC) verfügt über Lese-, Schreib- und Erstellungszugriff für Apache Iceberg-Clients auf verwaltete Apache Iceberg-Tabellen und schreibgeschützten Zugriff auf Delta Lake-Tabellen mit aktivierten Apache Iceberg-Lesevorgängen (UniForm).

Beide APIs unterstützen die Ausgabe von Anmeldeinformationen, die temporäre, bereichsspezifische Anmeldeinformationen bereitstellen, welche die Berechtigungen des anfordernden Azure Databricks-Prinzipals erben und die Governance- sowie Sicherheitskontrollen aufrechterhalten.

OpenSharing ist ein Open Source-Protokoll, das den sicheren und geregelten Datenzugriff auf externe Partner und Plattformen ermöglicht. Sie können OpenSharing verwenden, um Partnern temporären, schreibgeschützten Zugriff zu gewähren.

Alle Lese- und Schreibvorgänge in verwaltete Tabellen müssen Tabellennamen und Katalog- und Schemanamen verwenden, wo sie vorhanden sind. Beispiel: catalog_name.schema_name.table_name. Der pfadbasierte Zugriff auf verwaltete Tabellen im Unity-Katalog wird nicht unterstützt (außer im Kompatibilitätsmodus), da er die Zugriffssteuerungen des Unity-Katalogs umgeht und verhindert, dass verwaltete Tabellenfeatures ordnungsgemäß funktionieren.

Erstellen einer verwalteten Tabelle

Um eine verwaltete Tabelle zu erstellen, müssen Sie:

  • USE SCHEMA auf dem Schema der übergeordneten Tabelle.
  • USE CATALOG auf dem übergeordneten Katalog der Tabelle
  • CREATE TABLE auf dem Schema der übergeordneten Tabelle.

Verwenden Sie die folgende Syntax, um eine leere verwaltete Tabelle zu erstellen. Ersetzen Sie die folgenden Platzhalterwerte:

  • <catalog-name>: Der Name des Katalogs, der die Tabelle enthalten wird.
  • <schema-name>: Der Name des Schemas, der die Tabelle enthält.
  • <table-name>: Ein Tabellenname.
  • <column-specification>: Name und Datentyp jeder Spalte.

SQL

-- Create a managed Delta table
CREATE TABLE <catalog-name>.<schema-name>.<table-name>
(
  <column-specification>
);

-- Create a managed Iceberg table
CREATE TABLE <catalog-name>.<schema-name>.<table-name>
(
  <column-specification>
)
USING iceberg;

Python

Erstellen einer verwalteten Delta Lake-Tabelle mit saveAsTable():

from pyspark.sql.types import StructType, StructField, StringType

schema = StructType([StructField("<column-name>", StringType())])

spark.createDataFrame([], schema).write \
  .saveAsTable("<catalog-name>.<schema-name>.<table-name>")

Alternativ können Sie die DeltaTableBuilder API für Delta-spezifische Optionen wie generierte Spalten und Tabelleneigenschaften verwenden:

from delta.tables import DeltaTable

DeltaTable.create(spark) \
  .tableName("<catalog-name>.<schema-name>.<table-name>") \
  .addColumn("<column-name>", "<data-type>") \
  .property("<key>", "<value>") \
  .execute()

Erstellen Sie eine verwaltete Apache Iceberg-Tabelle:

from pyspark.sql.types import StructType, StructField, StringType

schema = StructType([StructField("<column-name>", StringType())])

spark.createDataFrame([], schema).write \
  .format("iceberg") \
  .saveAsTable("<catalog-name>.<schema-name>.<table-name>")

Um die Leistung von Lese- und Schreibvorgängen aufrechtzuerhalten, führt Azure Databricks regelmäßig Vorgänge aus, um verwaltete Apache Iceberg-Tabellenmetadaten zu optimieren. Diese Aufgabe wird mithilfe der serverlosen Berechnung ausgeführt, die über Berechtigungen für die Apache Iceberg-Tabelle verfügt MODIFY . Dieser Vorgang schreibt nur in die Metadaten der Tabelle, und das Berechnungssystem verwaltet die Berechtigungen für die Tabelle nur für die Dauer des Auftrags.

Note

Um eine Apache Iceberg-Tabelle zu erstellen, geben Sie explizit an USING iceberg. Andernfalls erstellt Azure Databricks standardmäßig eine Delta Lake-Tabelle.

Sie können verwaltete Tabellen aus Abfrageergebnissen oder DataFrame-Schreibvorgängen erstellen. Die folgenden Artikel demonstrieren einige der vielen Muster, die Sie verwenden können, um eine verwaltete Tabelle auf Azure Databricks zu erstellen:

Verwenden Sie klonen, um eine Kopie einer vorhandenen verwalteten Tabelle zu erstellen. Verwaltete Delta Lake-Tabellen unterstützen tiefes und flaches Klonen. Verwaltete Apache Iceberg-Tabellen unterstützen nur tiefes Klonen. Siehe Klonen einer Tabelle auf Azure Databricks und Klonen einer verwalteten Iceberg-Tabelle.

Löschen einer verwalteten Tabelle

Zum Löschen einer verwalteten Tabelle benötigen Sie Folgendes:

  • MANAGE auf der Tabelle oder Sie müssen der Tabellenbesitzer sein.
  • USE SCHEMA auf dem Schema der übergeordneten Tabelle.
  • USE CATALOG auf dem übergeordneten Katalog der Tabelle

Führen Sie zum Ablegen einer verwalteten Tabelle den folgenden Befehl aus:

SQL

DROP TABLE IF EXISTS catalog_name.schema_name.table_name;

Python

spark.sql("DROP TABLE IF EXISTS catalog_name.schema_name.table_name")

Alternativ können Sie ab Databricks Runtime 18.2 spark.catalog.dropTable() verwenden:

spark.catalog.dropTable("catalog_name.schema_name.table_name", ifExists=True)

Unity Catalog unterstützt den UNDROP TABLE Befehl zum Wiederherstellen versehentlich verworfener verwalteter Tabellen. Tabellen können standardmäßig 7 Tage nach dem Ablegen wiederhergestellt werden. Nach Beendigung des Wiederherstellungszeitraums löscht Azure Databricks die zugrunde liegenden Datendateien innerhalb von 48 Stunden aus Ihrem Cloudmandanten.

Konfigurieren des Wiederherstellungszeitraums

Von Bedeutung

Konfigurierbarer Wiederherstellungszeitraum befindet sich in der öffentlichen Vorschau.

Sie können auf der Katalog- oder Schemaebene konfigurieren, wie lange gelöschte verwaltete Tabellen wiederherstellbar bleiben. Wenn Wiederherstellungszeiträume auf beiden Ebenen festgelegt werden, hat die Einstellung auf Schemaebene Vorrang für Tabellen in diesem Schema.

Um den Wiederherstellungszeitraum zu konfigurieren, müssen Sie über MANAGE Berechtigung oder Besitzrechte für den Katalog oder das Schema verfügen. Diese Einstellung gilt nur für Tabellen, die nach der Konfiguration gelöscht wurden. Es wirkt sich nicht auf Tabellen aus, die bereits gelöscht wurden.

Der Wiederherstellungszeitraum kann auf 0 Stunden (zum Deaktivieren der Wiederherstellung) oder zwischen 7 bis 30 Tagen (einschließlich) festgelegt werden. Ein längerer Wiederherstellungszeitraum (bis zu 30 Tage) bietet zusätzlichen Schutz vor versehentlichem Verlust kritischer Produktionsdaten. Ein kürzerer Wiederherstellungszeitraum oder das Festlegen auf 0 führt dazu, dass gelöschte Daten schneller gelöscht werden – nützlich für Kosteneinsparungen in Workloads, die häufig Tabellen als Teil von ETL-Pipelines erstellen und ablegen. Wenn der Wiederherstellungszeitraum auf 0 gesetzt wird, können gelöschte Tabellen mit UNDROP nicht wiederhergestellt werden. Datendateien werden innerhalb von 48 Stunden nach dem Löschen der Tabelle aus dem Cloudspeicher gelöscht.

Um den Wiederherstellungszeitraum festzulegen, verwenden ALTER CATALOG Oder ALTER SCHEMA mit der RETAIN DROPPED TO Klausel:

SQL

-- Set a 30-day recovery period on a catalog
ALTER CATALOG my_catalog RETAIN DROPPED TO 30 DAYS;

-- Set a 7-day recovery period on a schema (overrides the catalog setting)
ALTER SCHEMA my_catalog.my_schema RETAIN DROPPED TO 7 DAYS;

Python

spark.sql("ALTER CATALOG my_catalog RETAIN DROPPED TO 30 DAYS")
spark.sql("ALTER SCHEMA my_catalog.my_schema RETAIN DROPPED TO 7 DAYS")

Sie können den Wiederherstellungszeitraum auch beim Erstellen eines Katalogs oder Schemas mit der RETAIN DROPPED FOR Klausel festlegen:

SQL

CREATE CATALOG my_catalog RETAIN DROPPED FOR 30 DAYS;
CREATE SCHEMA my_catalog.my_schema RETAIN DROPPED FOR 7 DAYS;

Python

spark.sql("CREATE CATALOG my_catalog RETAIN DROPPED FOR 30 DAYS")
spark.sql("CREATE SCHEMA my_catalog.my_schema RETAIN DROPPED FOR 7 DAYS")

Um den aktuellen Wiederherstellungszeitraum zu überprüfen, führen Sie DESCRIBE EXTENDED aus. Die Ausgabe enthält eine Recovery Period Hours Zeile:

SQL

DESCRIBE CATALOG EXTENDED my_catalog;
DESCRIBE SCHEMA EXTENDED my_catalog.my_schema;

Python

spark.sql("DESCRIBE CATALOG EXTENDED my_catalog").show()
spark.sql("DESCRIBE SCHEMA EXTENDED my_catalog.my_schema").show()