Verwenden von Unity Catalog mit Ihren Delta Live Tables-Pipelines
Wichtig
Die Delta Live Tables-Unterstützung für Unity Catalog befindet sich in der öffentlichen Vorschau.
Databricks empfiehlt die Konfiguration von Delta Live Tables-Pipelines mit Unity-Katalog.
Mit Unity Catalog konfigurierte Pipelines veröffentlichen alle definierten materialisierten Ansichten und Streamingtabellen im angegebenen Katalog und Schema. Unity Catalog-Pipelines können aus anderen Unity-Katalogtabellen und Volumes gelesen werden.
Verwenden Sie GRANT und REVOKE, um Berechtigungen für die Tabellen zu verwalten, die von einer Unity Catalog-Pipeline erstellt wurden.
Anforderungen
Berechtigungen zum Erstellen von Tabellen im Unity-Katalog aus einer Delta Live Tables-Pipeline:
USE CATALOG
Berechtigungen für den Zielkatalog.CREATE MATERIALIZED VIEW
undUSE SCHEMA
Berechtigungen für das Zielschema, wenn Ihre Pipeline materialisierte Ansichten erstellt.CREATE TABLE
undUSE SCHEMA
Berechtigungen für das Zielschema, wenn Ihre Pipeline Streamingtabellen erstellt.- Wenn in den Pipelineeinstellungen kein Zielschema angegeben ist, müssen Sie über
CREATE MATERIALIZED VIEW
- undCREATE TABLE
-Berechtigungen für mindestens ein Schema im Zielkatalog verfügen.
Berechnen, die zum Ausführen einer Unity-Katalog-fähigen Pipeline erforderlich ist:
- Cluster des freigegebenen Zugriffsmodus. Eine Unity Catalog-fähige Pipeline kann nicht auf einem einzelnen Benutzercluster ("zugewiesen") ausgeführt werden. Weitere Informationen finden Sie unter Einschränkungen im Modus für den freigegebenen Zugriff im Unity-Katalog.
Berechnung erforderlich, um Tabellen abzufragen, die von einer Delta Live Tables-Pipeline mit Unity Catalog (einschließlich Streamingtabellen und materialisierten Ansichten) erstellt werden, umfasst eine der folgenden Elemente:
SQL-Warehouses
Cluster des freigegebenen Zugriffsmodus auf Databricks Runtime 13.3 LTS oder höher.
Zugriffsmoduscluster mit einem einzelnen Benutzer (oder zugewiesen), wenn die feinkörnige Zugriffssteuerung auf dem einzelnen Benutzercluster aktiviert ist (d. h., der Cluster wird auf Databricks Runtime 15.4 oder höher ausgeführt, und die serverlose Berechnung wird für den Arbeitsbereich aktiviert). Weitere Informationen finden Sie unter Feinkornierte Zugriffssteuerung für die Berechnung einzelner Benutzer.
Einzelne Benutzer (oder "zugewiesene") Zugriffsmoduscluster auf 13.3 LTS bis 15.3, nur wenn der Tabellenbesitzer die Abfrage ausführt.
Es gelten zusätzliche Rechenbeschränkungen. Siehe den folgenden Abschnitt.
Einschränkungen
Im Folgenden sind Einschränkungen bei der Verwendung von Unity Catalog mit Delta Live Tables aufgeführt:
Standardmäßig können nur der Pipelinebesitzer und arbeitsbereichsadministratoren die Treiberprotokolle aus dem Cluster anzeigen, in dem eine Unity-Katalog-fähige Pipeline ausgeführt wird. Um anderen Benutzern den Zugriff auf die Treiberprotokolle zu ermöglichen, lesen Sie "Zulassen, dass Nicht-Administratorbenutzer die Treiberprotokolle aus einer Unity-Katalog-fähigen Pipeline anzeigen können".
Vorhandene Pipelines, die den Hive-Metastore verwenden, können nicht zur Verwendung von Unity Catalog aktualisiert werden. Um eine vorhandene Pipeline zu migrieren, die in den Hive-Metastore schreibt, müssen Sie eine neue Pipeline erstellen und Daten aus der bzw. den Datenquellen erneut erfassen.
Sie können keine Unity Catalog-fähige Pipeline in einem Arbeitsbereich erstellen, der an einen Metaspeicher angefügt ist, der während der öffentlichen Vorschau des Unity-Katalogs erstellt wurde. Siehe Upgrade auf Berechtigungsvererbung.
JARs werden nicht unterstützt. Nur Python-Bibliotheken von Drittanbietern werden unterstützt. Weitere Informationen finden Sie unter Verwalten von Python-Abhängigkeiten für Delta Live Tables-Pipelines.
DML-Abfragen (Data Manipulation Language), die das Schema einer Streamingtabelle ändern, werden nicht unterstützt.
Eine materialisierte Ansicht, die in einer Delta Live Tables-Pipeline erstellt wurde, kann nicht als Streamingquelle außerhalb dieser Pipeline verwendet werden, z. B. in einer anderen Pipeline oder einem nachgelagerten Notizbuch.
Wenn eine Pipeline in einem Schema mit einem verwalteten Speicherort veröffentlicht wird, kann das Schema in einem nachfolgenden Update geändert werden, aber nur, wenn das aktualisierte Schema denselben Speicherort wie das zuvor angegebene Schema verwendet.
Tabellen werden am Speicherort für das Zielschema gespeichert. Wenn kein Schemaspeicherort angegeben ist, werden Tabellen im Katalogspeicherort gespeichert. Wenn Schema- und Katalogspeicherorte nicht angegeben sind, werden Tabellen im Stammspeicherort des Metastores gespeichert.
Auf der Registerkarte "Katalog-Explorer-Verlauf" wird der Verlauf für materialisierte Ansichten nicht angezeigt.
Die Eigenschaft
LOCATION
wird beim Definieren einer Tabelle nicht unterstützt.Unity Catalog-fähige Pipelines können nicht im Hive-Metastore veröffentlichen.
Python-UDF-Unterstützung ist in Public Preview.
Sie können Delta Sharing nicht mit einer materialisierten Delta Live Tables-Sicht oder Streamingtabelle verwenden, die in Unity Catalog veröffentlicht wurde.
Die
event_log
kann nicht in einer Pipeline oder Abfrage verwendet werden, um auf die Ereignisprotokolle mehrerer Pipelines zuzugreifen.Eine Sicht, die über die
event_log
erstellt wurde, kann nicht für andere Benutzer freigegeben werden.Einzelknotencluster werden mit Unity Catalog-fähigen Pipelines nicht unterstützt. Da Delta Live Tables möglicherweise einen Einzelknotencluster erstellt, um kleinere Pipelines auszuführen, schlägt Ihre Pipeline möglicherweise mit einer Fehlermeldung fehl, die auf
single-node mode
verweist. Geben Sie in diesem Fall mindestens einen Worker an, wenn Sie die Berechnung konfigurieren. Siehe Konfigurieren der Compute für eine Delta Live Tables-Pipeline.
Hinweis
Die zugrunde liegenden Dateien, die materialisierte Sichten unterstützen, können Daten aus Upstreamtabellen (einschließlich möglicher personenbezogener Informationen) enthalten, die in der Definition der materialisierten Sicht nicht angezeigt werden. Diese Daten werden automatisch zum zugrunde liegenden Speicher hinzugefügt, um die inkrementelle Aktualisierung materialisierter Sichten zu unterstützen.
Da die zugrunde liegenden Dateien einer materialisierten Sicht möglicherweise das Risiko bergen, dass Daten aus Upstreamtabellen verfügbar gemacht werden, die nicht Teil des Schemas der materialisierten Sicht sind, empfiehlt Databricks, den zugrunde liegenden Speicher nicht für nicht vertrauenswürdige Downstreamconsumer freizugeben.
Angenommen, eine materialisierte Ansichtsdefinition enthält eine COUNT(DISTINCT field_a)
Klausel. Obwohl die Definition der materialisierten Sicht nur die Aggregatklausel COUNT DISTINCT
enthält, enthalten die zugrunde liegenden Dateien eine Liste der tatsächlichen Werte von field_a
.
Kann ich Hive-Metastore- und Unity-Katalogpipelinen zusammen verwenden?
Ihr Arbeitsbereich kann Pipelines enthalten, die Unity-Katalog und den älteren Hive-Metaspeicher verwenden. Eine einzelne Pipeline kann jedoch nicht in den Hive-Metastore und den Unity-Katalog geschrieben werden. Vorhandene Pipelines, die in den Hive-Metaspeicher schreiben, können nicht für die Verwendung des Unity-Katalogs aktualisiert werden.
Vorhandene Pipelines, die unity Catalog nicht verwenden, sind nicht davon betroffen, neue Pipelines zu erstellen, die mit Unity-Katalog konfiguriert sind. Diese Pipelines speichern weiterhin Daten im Hive-Metaspeicher mithilfe des konfigurierten Speicherorts.
Sofern in diesem Dokument nicht anders angegeben, werden alle vorhandenen Datenquellen und Delta Live Tables-Funktionen mit Pipelines unterstützt, die Unity Catalog verwenden. Sowohl die Python- als auch die SQL-Schnittstelle werden mit Pipelines unterstützt, die Unity Catalog verwenden.
Änderungen an vorhandenen Funktionen
Wenn Delta Live Tables zum permanenten Speichern von Daten in Unity Catalog konfiguriert ist, wird der Lebenszyklus der Tabelle von der Delta Live Tables-Pipeline verwaltet. Da die Pipeline den Tabellenlebenszyklus und die Berechtigungen verwaltet, gilt Folgendes:
- Wenn eine Tabelle aus der Delta Live Tables-Pipelinedefinition entfernt wird, wird die entsprechende materialisierte Sicht oder der Eintrag der Streamingtabelle beim nächsten Pipelineupdate aus Unity Catalog entfernt. Die tatsächlichen Daten werden für einen Zeitraum aufbewahrt, sodass sie bei versehentlicher Löschung wiederhergestellt werden können. Die Daten können wiederhergestellt werden, indem die materialisierte Sicht oder die Streamingtabelle wieder in die Pipelinedefinition aufgenommen wird.
- Wenn Sie die Pipeline delta Live Tables löschen, werden alle in dieser Pipeline definierten Tabellen gelöscht. Aufgrund dieser Änderung wird die Benutzeroberfläche von Delta Live Tables aktualisiert, um Sie aufzufordern, das Löschen einer Pipeline zu bestätigen.
- Interne Sicherungstabellen, einschließlich derjenigen, die zur Unterstützung
APPLY CHANGES INTO
verwendet werden, sind von Benutzern nicht direkt zugänglich.
Schreiben von Tabellen in Unity Catalog aus einer Delta Live Tables-Pipeline
Hinweis
Wenn Sie kein Katalog- und Zielschema für eine Pipeline auswählen, werden Tabellen nicht in Unity Catalog veröffentlicht und können nur von Abfragen in derselben Pipeline aufgerufen werden.
Wenn Sie Ihre Tabellen in den Unity-Katalog schreiben möchten, müssen Sie Ihre Pipeline so konfigurieren, dass sie über Ihren Arbeitsbereich damit arbeiten kann. Wenn Sie eine Pipeline erstellen, wählen Sie "Unity-Katalog" unter "Speicheroptionen" aus, wählen Sie im Dropdownmenü "Katalog" einen Katalog aus, und wählen Sie ein vorhandenes Schema aus, oder geben Sie den Namen für ein neues Schema im Dropdownmenü "Zielschema" ein. Informationen zu Unity Catalog-Katalogen finden Sie unter Was sind Kataloge in Azure Databricks?. Informationen zu Schemas in Unity Catalog finden Sie unter Was sind Schemas in Azure Databricks?.
Erfassen von Daten in einer Unity Catalog-Pipeline
Ihre Pipeline, die für die Verwendung von Unity Catalog konfiguriert ist, kann Daten aus folgenden Quellen lesen:
- Von Unity Catalog verwaltete und externe Tabellen, Ansichten, materialisierte Sichten und Streamingtabellen.
- Hive-Metastore-Tabellen und -Ansichten.
- Autoloader mit der Funktion
read_files()
zum Lesen aus externen Unity Catalog-Speicherorten. - Apache Kafka und Amazon Kinesis.
Im Folgenden sind Beispiele für das Lesen aus Unity Catalog- und Hive-Metastore-Tabellen aufgeführt.
Batcherfassung aus einer Unity Catalog-Tabelle
SQL
CREATE OR REFRESH MATERIALIZED VIEW
table_name
AS SELECT
*
FROM
my_catalog.my_schema.table1;
Python
@dlt.table
def table_name():
return spark.read.table("my_catalog.my_schema.table")
Streamen von Änderungen aus einer Unity Catalog-Tabelle
SQL
CREATE OR REFRESH STREAMING TABLE
table_name
AS SELECT
*
FROM
STREAM(my_catalog.my_schema.table1);
Python
@dlt.table
def table_name():
return spark.readStream.table("my_catalog.my_schema.table")
Erfassen von Daten aus dem Hive-Metastore
Eine Pipeline, die Unity Catalog verwendet, kann Daten aus Hive-Metastore-Tabellen mithilfe des Katalogs hive_metastore
lesen:
SQL
CREATE OR REFRESH MATERIALIZED VIEW
table_name
AS SELECT
*
FROM
hive_metastore.some_schema.table;
Python
@dlt.table
def table3():
return spark.read.table("hive_metastore.some_schema.table")
Erfassen von Daten aus dem Autoloader
SQL
CREATE OR REFRESH STREAMING TABLE
table_name
AS SELECT
*
FROM
read_files(
<path-to-uc-external-location>,
"json"
)
Python
@dlt.table(table_properties={"quality": "bronze"})
def table_name():
return (
spark.readStream.format("cloudFiles")
.option("cloudFiles.format", "json")
.load(f"{path_to_uc_external_location}")
)
Teilen materialisierter Sichten
Standardmäßig verfügt nur der Pipelinebesitzer über die Berechtigung zum Abfragen von Datasets, die von der Pipeline erstellt wurden. Sie können anderen Benutzern die Möglichkeit geben, eine Tabelle mithilfe von GRANT-Anweisungen abzufragen, und Sie können den Abfragezugriff mithilfe von REVOKE-Anweisungen widerrufen. Weitere Informationen zu Berechtigungen in Unity Catalog finden Sie unter Verwalten von Berechtigungen in Unity Catalog.
Gewähren einer Auswahl für eine Tabelle
GRANT SELECT ON TABLE
my_catalog.my_schema.table_name
TO
`user@databricks.com`
Widerrufen einer Auswahl für eine Tabelle
REVOKE SELECT ON TABLE
my_catalog.my_schema.table_name
FROM
`user@databricks.com`
Erteilen von Berechtigungen zum Erstellen von Tabellen oder zum Erstellen materialisierter Sichten
GRANT CREATE { MATERIALIZED VIEW | TABLE } ON SCHEMA
my_catalog.my_schema
TO
{ principal | user }
Anzeigen der Herkunft für eine Pipeline
Die Herkunft für Tabellen in einer Delta Live Tables-Pipeline ist im Katalog-Explorer sichtbar. Die Katalog-Explorer-Benutzeroberfläche zeigt die upstream- und downstream-Tabellen für materialisierte Ansichten oder Streamingtabellen in einer Unity-Katalog-fähigen Pipeline an. Weitere Informationen zur Unity Catalog-Herkunft finden Sie unter Erfassen und Anzeigen der Datenherkunft mit Unity Catalog.
Für eine materialisierte Ansicht oder Streamingtabelle in einer Unity Catalog-fähigen Delta Live Tables-Pipeline wird die Herkunftsbenutzeroberfläche des Katalog-Explorers auch mit der Pipeline verknüpft, welche die materialisierte Ansicht oder Streamingtabelle erstellt hat, wenn aus dem aktuellen Arbeitsbereich auf die Pipeline zugegriffen werden kann.
Hinzufügen, Ändern oder Löschen von Daten in einer Streamingtabelle
Mithilfe von DML-Anweisungen (Insert, Update, Delete und Merge) können Sie Streamingtabellen ändern, die im Unity-Katalog veröffentlicht wurden. Die Unterstützung von DML-Abfragen für Streamingtabellen ermöglicht Anwendungsfälle wie das Aktualisieren von Tabellen für die Einhaltung der Datenschutz-Grundverordnung (DSGVO).
Hinweis
- DML-Anweisungen, die das Tabellenschema einer Streamingtabelle ändern, werden nicht unterstützt. Stellen Sie sicher, dass Ihre DML-Anweisungen nicht versuchen, das Tabellenschema weiterzuentwickeln.
- DML-Anweisungen, die eine Streamingtabelle aktualisieren, können nur in einem freigegebenen Unity Catalog-Cluster oder einem SQL-Warehouse mit Databricks Runtime 13.3 LTS und höher ausgeführt werden.
- Da für das Streaming Datenquellen im Nur-Anfügen-Modus benötigt werden, setzen Sie das Flag skipChangeCommits beim Lesen der Streaming-Quelltabelle, wenn Ihre Verarbeitung Streaming aus einer Streaming-Quelltabelle mit Änderungen (z. B. durch DML-Anweisungen) erfordert. Wenn
skipChangeCommits
festgelegt ist, werden Transaktionen, die Datensätze in der Quelltabelle löschen oder ändern, ignoriert. Wenn Ihre Verarbeitung keine Streamingtabelle erfordert, können Sie eine materialisierte Ansicht (die nicht die Einschränkung „nur Anhängen“ hat) als Zieltabelle verwenden.
Im Folgenden sind Beispiele für DML-Anweisungen zum Ändern von Datensätzen in einer Streamingtabelle aufgeführt.
Löschen von Datensätzen mit einer bestimmten ID:
DELETE FROM my_streaming_table WHERE id = 123;
Aktualisieren von Datensätzen mit einer bestimmten ID:
UPDATE my_streaming_table SET name = 'Jane Doe' WHERE id = 123;
Veröffentlichen von Tabellen mit Zeilenfiltern und Spaltenmasken
Wichtig
Dieses Feature befindet sich in der Public Preview.
Mit Zeilenfiltern können Sie eine Funktion angeben, die als Filter gilt, wenn ein Tabellenscan Zeilen abruft. Mit diesen Filtern können Sie sicherstellen, dass nachfolgende Abfragen nur Zeilen zurückgeben, für die das Filterprädikat zu TRUE ausgewertet wird.
Mit Spaltenmasken können Sie die Werte einer Spalte immer filtern, wenn ein Tabellenscan Zeilen abruft. Zukünftige Abfragen für diese Spalte geben das Ergebnis der ausgewerteten Funktion anstelle des ursprünglichen Werts der Spalte zurück. Weitere Informationen zur Verwendung von Zeilenfiltern und Spaltenformaten finden Sie unter Filtern vertraulicher Tabellendaten mithilfe von Zeilenfiltern und Spaltenformaten.
Verwalten von Zeilenfiltern und Spaltenmasken
Zeilenfilter und Spaltenmasken für materialisierte Sichten und Streamingtabellen sollten mithilfe der CREATE OR REFRESH
-Anweisung hinzugefügt, aktualisiert oder gelöscht werden.
Ausführliche Syntax zum Definieren von Tabellen mit Zeilenfiltern und Spaltenmasken finden Sie unter Delta Live Tables SQL-Sprachreferenz und Delta Live Tables Python-Sprachreferenz.
Behavior
Im Folgenden sind wichtige Details beim Verwenden von Zeilenfiltern oder Spaltenmasken in Delta Live Tables-Pipelines aufgeführt:
- Als Besitzer aktualisieren: Wenn eine Pipelineaktualisierung eine materialisierte Ansicht oder Streamingtabelle aktualisiert, werden Zeilenfilter- und Spaltenmaskenfunktionen mit den Rechten des Pipelinebesitzers ausgeführt. Dies bedeutet, dass die Tabellenaktualisierung den Sicherheitskontext des Benutzers verwendet, der die Pipeline erstellt hat. Funktionen, die den Benutzerkontext überprüfen (z. B.
CURRENT_USER
undIS_MEMBER
), werden mithilfe des Benutzerkontexts des Pipelinebesitzers ausgewertet. - Abfrage: Beim Abfragen einer materialisierten Sicht oder Streamingtabelle werden Funktionen, die den Benutzerkontext überprüfen (z. B.
CURRENT_USER
undIS_MEMBER
), mithilfe des Benutzerkontexts des Aufrufers ausgewertet. Durch diese Vorgehensweise werden benutzerspezifische Datensicherheit und Zugriffssteuerungen basierend auf dem Kontext des aktuellen Benutzers erzwungen. - Beim Erstellen materialisierter Sichten über Quelltabellen, die Zeilenfilter und Spaltenmasken enthalten, ist die Aktualisierung der materialisierten Sicht immer eine vollständige Aktualisierung. Bei einer vollständigen Aktualisierung werden alle in der Quelle verfügbaren Daten mit den neuesten Definitionen aktualisiert. Dieser Prozess stellt sicher, dass Sicherheitsrichtlinien der Quelltabellen ausgewertet und mit den aktuellen Daten und Definitionen aktualisiert werden.
Einblick
Verwenden Sie DESCRIBE EXTENDED
, INFORMATION_SCHEMA
oder den Katalog-Explorer, um die vorhandenen Zeilenfilter und Spaltenmasken zu untersuchen, die für eine bestimmte materialisierte Ansicht oder Streaming-Tabelle gelten. Mit dieser Funktionalität können Benutzer Datenzugriffs- und Schutzmaßnahmen für materialisierte Sichten und Streamingtabellen überwachen und überprüfen.