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.
Von Bedeutung
Dieses Feature befindet sich in der Public Preview.
Im Kompatibilitätsmodus von Unity Catalog können Sie verwaltete Tabellen, materialisierte Ansichten und Streamingtabellen aus externen Systemen bei gleichzeitiger Gewährleistung optimaler Leistung in Azure Databricks lesen. Diese Funktion erzeugt automatisch schreibgeschützte Versionen Ihrer Tabellen, auf die von jedem Delta Lake- oder Iceberg-Client zugegriffen werden kann.
Überblick
Wenn diese Option in einer verwalteten Tabelle, einer Streamingtabelle oder einer materialisierten Ansicht aktiviert ist, generiert der Kompatibilitätsmodus eine schreibgeschützte Version Ihrer Tabelle an einem ausgewählten Speicherort. Diese Kompatibilitätsversion enthält v1-Metadaten für delta Lake- und Iceberg-Formate, die die folgenden Funktionen bereitstellen:
- Interoperabilität mit jedem Delta Lake-Client: Lesen Sie Ihre verwalteten Tabellen, einschließlich Streamingtabellen oder materialisierten Ansichten, von Clients wie Amazon Athena, Microsoft Fabric, Snowflake und Amazon Redshift direkt vom Speicher oder über die Unity REST-API
- Interoperabilität mit jedem Iceberg-Client: Lesen Sie Ihre verwalteten Tabellen, einschließlich Streamingtabellen oder materialisierten Ansichten, von Iceberg-Clients wie Apache Spark, Apache Trino und Snowflake über den Iceberg REST-Katalog
- Set-and-Forget-Automatisierung: Automatisieren von Daten- und Metadatenaktualisierungen für Kompatibilitätsversionen mit der Möglichkeit, Aktualisierungsintervalle in nahezu Echtzeit zu konfigurieren
Voraussetzungen
Um den Kompatibilitätsmodus in einer Tabelle zu aktivieren, müssen Sie Unity-Katalog verwenden. Es werden nur Streamingtabellen im Unity-Katalog, materialisierte Ansichten des Unity-Katalogs und verwaltete Unity-Katalogtabellen unterstützt. Externe Tabellen des Unity-Katalogs werden nicht unterstützt.
Stellen Sie außerdem sicher, dass Sie einen externen Speicherort haben, der im Unity-Katalog mit den richtigen Einstellungen und Berechtigungen registriert ist:
- Der Zielspeicherort muss in Ihrem Speicherkonto vorhanden sein und leer sein.
- Der Zielspeicherort oder ein übergeordneter Ordner muss als externer Speicherort im Unity-Katalog registriert werden.
- Sie müssen über
CREATE EXTERNAL TABLEPrivilegien für den externen Speicherort verfügen. - Der Zielspeicherort und alle übergeordneten oder untergeordneten Ordner dürfen nicht innerhalb der letzten 7 Tage als Kompatibilitätsmodusspeicherort für eine andere Tabelle verwendet werden.
Kompatibilitätsmodus für Tabellen aktivieren
Legen Sie bei Streamingtabellen, materialisierten Ansichten und verwalteten flachen Klonen die folgenden Tabelleneigenschaften zum Zeitpunkt der Tabellenerstellung fest.
CREATE [STREAMING TABLE | MATERIALIZED VIEW | TABLE] my_catalog.my_schema.my_table
TBLPROPERTIES(
'delta.universalFormat.enabledFormats' = 'compatibility',
'delta.universalFormat.compatibility.location' = '<location>'
)
Nur für verwaltete Tabellen im Unity-Katalog können Sie den Kompatibilitätsmodus aktivieren, wenn Sie eine vorhandene Tabelle ändern:
-- For existing managed tables
ALTER TABLE my_catalog.my_schema.my_table SET TBLPROPERTIES(
'delta.universalFormat.enabledFormats' = 'compatibility',
'delta.universalFormat.compatibility.location' = '<location>'
)
Es dauert bis zu einer Stunde, um eine Kompatibilitätsversion zum ersten Mal zu generieren. Sie können die Tabelle sofort aktualisieren , um zu bestätigen, dass sie funktioniert.
Hinweis
Sie müssen den vollständigen dreiteiligen Tabellennamen (catalog.schema.table_name) angeben. Zum Beispiel ist users.john.my_table der Katalog und users das Schema für john.
Überprüfen, ob der Kompatibilitätsmodus aktiviert ist
Um zu überprüfen, ob der Kompatibilitätsmodus in der Tabelle aktiviert ist, überprüfen Sie, ob die delta.universalFormat.enabledFormats = 'compatibility' Tabelleneigenschaft vorhanden ist. Sie können diese Eigenschaft in der Benutzeroberfläche des Katalog-Explorers auf der Registerkarte "Details" für Ihre Tabelle anzeigen.
Sie können auch die folgenden SQL-Befehle in einem Notizbuch ausführen:
DESC DETAIL my_catalog.my_schema.my_table
DESC EXTENDED my_catalog.my_schema.my_table
Suchen Sie in der Ausgabe nach diesen Eigenschaften:
-
delta.universalFormat.enabledFormats: "compatibility"– Gibt an, dass der Kompatibilitätsmodus aktiviert ist. -
delta.universalFormat.compatibility.location– Zeigt den Speicherort der Kompatibilitätsmodusversion an.
Konfigurieren von Aktualisierungsintervallen
Für verwaltete Tabellen im Unity-Katalog können Sie konfigurieren, wie häufig die Kompatibilitätsmodusversion aktualisiert wird, indem Sie das Aktualisierungsintervall festlegen:
-- Evaluate whether a refresh is needed after every commit (fastest)
ALTER TABLE my_catalog.my_schema.my_table SET TBLPROPERTIES(
'delta.universalFormat.enabledFormats' = 'compatibility',
'delta.universalFormat.compatibility.location' = '<location>',
'delta.universalFormat.compatibility.targetRefreshInterval' = '0 MINUTES'
)
-- Refresh hourly (default)
ALTER TABLE my_catalog.my_schema.my_table SET TBLPROPERTIES(
'delta.universalFormat.enabledFormats' = 'compatibility',
'delta.universalFormat.compatibility.location' = '<location>',
'delta.universalFormat.compatibility.targetRefreshInterval' = '1 HOUR'
)
Das Standardmäßige Aktualisierungsintervall ist 1 HOUR. Das Festlegen des Aktualisierungsintervalls unter 1 Stunde wird nicht empfohlen und macht keine Aktualisierungen häufiger. Die Ausnahme ist, wenn Sie das Aktualisierungsintervall festlegen auf 0 MINUTES. In diesem Fall sucht Azure Databricks nach jedem Commit auf Änderungen und löst bei Bedarf eine Aktualisierung aus.
Für Streamingtabellen und materialisierte Ansichten ist kein Aktualisierungsintervall erforderlich. Der Standardwert lautet 0 MINUTES.
Hinweis
Änderungen, die sich erheblich auf aktualisierungszeiten auswirken (z. B. Spaltenumbenennung oder Aktivieren der Typverbreiterung), werden stundenweise ausgeführt, unabhängig vom Zielaktualisierungsintervall.
Manuelle Aktualisierung
So lösen Sie eine Aktualisierung der Kompatibilitätsversion manuell aus:
REFRESH [TABLE | STREAMING TABLE | MATERIALIZED VIEW] my_catalog.my_schema.my_table SYNC UNIFORM
Die manuelle Aktualisierung der Anzeige eignet sich zum Testen, ob der Kompatibilitätsmodus ordnungsgemäß funktioniert, oder um sicherzustellen, dass Ihre Kompatibilitätsversion auf dem neuesten Stand ist, bevor ein weiteres Auslesen erfolgt. Das Warten auf die automatischen Aktualisierungen kann jedoch kostengünstiger sein.
Überwachen des Daten- und Metadatengenerierungsstatus
Der Kompatibilitätsmodus generiert Daten und Metadaten automatisch und asynchron. Bei verwalteten Tabellen im Unity-Katalog erfolgt die Generierung standardmäßig stündlich oder basierend auf Ihrem konfigurierten Aktualisierungsintervall. Bei Streamingtabellen und materialisierten Ansichten erfolgt die Generierung nach Tabellenaktualisierungen, wenn neue Commits vorhanden sind.
So überprüfen Sie, ob Daten und Metadaten erfolgreich generiert wurden:
Verwenden Sie
DESCRIBE HISTORY, um die neueste Version Ihrer Quelltabelle zu finden.DESC HISTORY my_catalog.my_schema.my_table
Dieser Befehl gibt den Verlauf der Aktualisierungen im Kompatibilitätsmodus zurück, einschließlich der Delta Lake-Version und des Zeitstempels. Die oberste Zeile enthält die neueste Version und den Zeitstempel.
Verwenden Sie
DESCRIBE EXTENDED, um die entsprechende Version des Kompatibilitätsmodus zu finden.DESC EXTENDED my_catalog.my_schema.my_table
Suchen Sie nach Feldern unter "Uniform Compatibility Information":
- Letzte aktualisierte Version: Die Delta Lake-Version, die zuletzt mit dem Kompatibilitätsmodus aktualisiert wurde
- Letzte Aktualisierung: Der Zeitstempel der letzten Aktualisierung
Der Kompatibilitätsmodus ist aktuell, wenn die Tabellenversion mit der Version übereinstimmt, die in Schritt 1 gefunden wurde.
Verwenden Sie
DESC HISTORYfür die Kompatibilitätsversion selbst.DESC HISTORY delta.\`<compatibility_location>\`
Zeigen Sie im Katalog-Explorer die Metadatenfelder für die Kompatibilitätsversion an. Der Kompatibilitätsmodus ist auf dem neuesten Stand, wenn die Delta Lake-Version mit der Version übereinstimmt, die in Schritt 3 gefunden wurde.
Kosten überwachen
Die Predictive Optimization behandelt den Computecluster, der automatische Aktualisierungen für den Kompatibilitätsmodus durchführt. Um die zugeordneten Kosten anzuzeigen, fragen Sie die Systemabrechnungstabellen ab:
SELECT
DATE_TRUNC('DAY', start_time) AS day,
SUM(usage_quantity) AS dbus
FROM
system.storage.predictive_optimization_operations_history
WHERE
operation_type = "COMPATIBILITY_MODE_REFRESH"
GROUP BY 1
ORDER BY 1 DESC;
Diese Abfrage meldet die Verwendung nur für automatische Aktualisierungen. Kosten für manuelle Aktualisierungen sind mit Ihrer Berechnung verknüpft, und es gibt keine direkte Möglichkeit, diese Kosten separat nachzuverfolgen. Im Allgemeinen ist die Kosten eines manuellen Triggers proportional zu den Kosten des anfänglichen Schreibvorgangs an die ursprüngliche Tabelle.
Nicht verwendete Datendateien entfernen
Um nicht verwendete Datendateien für die Kompatibilitätsversion Ihrer Tabelle zu entfernen, verwenden Sie Folgendes VACUUM:
VACUUM delta.'<compatibility_mode_location_path>';
Um den Pfad für den Kompatibilitätsmodus zu finden, verwenden Sie den DESCRIBE EXTENDED Befehl unter "Überprüfen, ob der Kompatibilitätsmodus aktiviert ist". In der Ausgabe ist der Wert von delta.universalFormat.compatibility.location die Position.
Kompatibilitätsversionen von externen Clients abrufen
Sie können jeden Delta Lake- oder Iceberg-Client verwenden, um Daten aus Kompatibilitätsversionen zu lesen. Beispiele für Amazon Athena, Snowflake (Delta Reader) und Fabric finden Sie unten.
Amazon Athena
Erstellen Sie im Athena-Abfrage-Editor eine externe Tabelle mit der angegebenen Position:
CREATE EXTERNAL TABLE <table_name> LOCATION '<compatibility_location>' TBLPROPERTIES ('table_type' = 'DELTA')Lesen Sie die Tabelle:
SELECT * FROM <table_name>
Snowflake Delta Lake-Leser
Erstellen Sie die Speicherintegration für den Zugriff auf den Speicherort (siehe Snowflake-Dokumentation).
Erstellen einer externen Tabelle mit Delta Lake-Format:
CREATE OR REPLACE EXTERNAL TABLE <table_name> WITH LOCATION = @<my_location> FILE_FORMAT = (TYPE = PARQUET) TABLE_FORMAT = DELTA AUTO_REFRESH = false REFRESH_ON_CREATE = false;Aktualisieren Sie die Tabelle (die automatische Aktualisierung wird für das Delta Lake-Format in Snowflake nicht unterstützt):
ALTER EXTERNAL TABLE <table_name> REFRESH;Lesen Sie die Tabelle:
SELECT * FROM <table_name>;
Microsoft Fabric
Erstellen Sie ein Fabric-Kapazitäts-, Arbeitsbereichs- und Synapse-Notizbuch.
Erstellen Sie ein Seehaus mit Daten am Kompatibilitätsort.
Lesen Sie die Dateien als Delta Lake-Tabelle:
spark.read.format("delta").load("Files/<path_to_data>")
Lesen von Kompatibilitätsversionen aus der Unity-REST-API
Tabellen mit aktivierter Kompatibilitätsmodus können anhand des Namens über die Unity-REST-API mit speziellen Parametern gelesen werden. Legen Sie für Streamingtabellen den folgenden API-Parameter fest:
GET /api/2.1/unity-catalog/tables/{full_name}?read_streaming_table_as_managed=true
Legen Sie für materialisierte Ansichten den folgenden API-Parameter fest:
GET /api/2.1/unity-catalog/tables/{full_name}?read_materialized_view_as_managed=true
Lesen von Kompatibilitätsversionen aus dem Iceberg REST-Katalog
Tabellen mit aktivierter Kompatibilitätsmodus können mit dem Iceberg REST-Katalog von jedem Iceberg-Client gelesen werden. Der Kompatibilitätsmodus funktioniert automatisch für Delta Lake- und Iceberg-Tabellenformate.
Setupanforderungen
- Aktivieren sie den Zugriff auf externe Daten im Metastore.
- Gewähren Sie
EXTERNAL USE SCHEMAberechtigungen für das Schema. - Erstellen Sie ein persönliches Azure Databricks-Zugriffstoken (PAT).
Apache Spark-Konfiguration
bin/spark-sql --packages org.apache.iceberg:iceberg-spark-runtime-3.5_2.12:1.8.0,org.apache.iceberg:iceberg-azure-bundle:1.8.0 \
--conf "spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions" \
--conf spark.sql.catalog.catalog_name=org.apache.iceberg.spark.SparkCatalog \
--conf spark.sql.catalog.catalog_name.type=rest \
--conf spark.sql.catalog.catalog_name.uri=<workspace-url>/api/2.1/unity-catalog/iceberg-rest \
--conf spark.sql.catalog.catalog_name.token=<PAT> \
--conf spark.sql.catalog.catalog_name.warehouse=<uc-catalog-name>
Weitere Informationen finden Sie unter Verwenden von Iceberg-Tabellen mit Apache Spark.
Snowflake-Konfiguration
CREATE OR REPLACE CATALOG INTEGRATION my_uc_int
CATALOG_SOURCE = ICEBERG_REST
TABLE_FORMAT = ICEBERG
CATALOG_NAMESPACE = '<uc-schema-name>'
REST_CONFIG = (
CATALOG_URI = '<workspace-url>/api/2.1/unity-catalog/iceberg-rest'
CATALOG_NAME = '<uc-catalog-name>'
ACCESS_DELEGATION_MODE = VENDED_CREDENTIALS
)
REST_AUTHENTICATION = (
TYPE = BEARER
BEARER_TOKEN = '<PAT>'
)
ENABLED = TRUE;
CREATE OR REPLACE ICEBERG TABLE my_table
CATALOG = 'my_uc_int'
CATALOG_TABLE_NAME = '<uc-st/mv-name>';
Kompatibilitätsmodus deaktivieren
Um den Kompatibilitätsmodus zu deaktivieren, deaktivieren Sie die entsprechende Tabelleneigenschaft:
-- For UC managed tables
ALTER TABLE my_table UNSET TBLPROPERTIES('delta.universalFormat.enabledFormats')
-- For streaming tables and materialized views
CREATE OR REPLACE [STREAMING TABLE | MATERIALIZED VIEW] my_table
TBLPROPERTIES('delta.universalFormat.enabledFormats' = '')
Warnung
Durch das Aufheben des Kompatibilitätsmodus werden die Daten- und Metadatengenerierung sofort beendet. Nach 7 Tagen werden die zugehörigen Daten und Metadaten gelöscht. Innerhalb dieses 7-Tage-Zeitraums können Sie die Daten und Metadaten wiederherstellen, indem Sie den Kompatibilitätsmodus in derselben Tabelle erneut aktivieren.
Einschränkungen
- Schreibgeschützter Zugriff: Die Kompatibilitätsversion ist schreibgeschützt. Sie können nicht in die Kompatibilitätsversion schreiben.
- Keine RLS/CLS-Unterstützung: Sie können den Kompatibilitätsmodus für Tabellen mit Row-Level Sicherheit (RLS) oder Column-Level Security (CLS) nicht aktivieren.
- Keine Partitionsspaltenumbenennung: Partitionsspaltenumbenennung wird für Tabellen mit aktivierter Kompatibilitätsmodus nicht unterstützt. Datenspaltenumbenennung wird unterstützt.
-
Eingeschränkte Tabellenfeatures: Die folgenden Funktionen sind in der Kompatibilitätsversion nicht verfügbar:
- Sortierspalten
- Primärschlüssel
- Zeitreise
- Ändern des Datenfeeds
- Spaltennamen mit Sonderzeichen (werden umbenannt)