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.

Zusätzlich zur vorhandenen Unterstützung für das permanente Speichern von Tabellen im Hive-Metastore können Sie Unity Catalog mit Ihren Delta Live Tables-Pipelines für Folgendes verwenden:

  • Definieren eines Katalogs in Unity Catalog, in dem Ihre Pipeline Tabellen permanent speichert.
  • Lesen von Daten aus Unity Catalog-Tabellen.

Ihr Arbeitsbereich kann Pipelines enthalten, die Unity Catalog oder den Hive-Metastore verwenden. Eine einzelne Pipeline kann jedoch nicht in den Hive-Metastore und Unity Catalog schreiben, und vorhandene Pipelines können nicht zur Verwendung von Unity Catalog aktualisiert werden. Ihre vorhandenen Pipelines, die Unity Catalog nicht verwenden, sind von dieser Vorschau nicht betroffen und speichern weiterhin Daten permanent im Hive-Metastore 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.

Die in Ihrer Pipeline erstellten Tabellen können auch mithilfe von Databricks Runtime 13.1 und höher oder einem SQL-Warehouse von freigegebenen Unity Catalog-Clustern abgefragt werden. Tabellen können nicht von zugewiesenen oder nicht isolierten Clustern abgefragt werden.

Verwenden Sie GRANT und REVOKE, um Berechtigungen für die Tabellen zu verwalten, die von einer Unity Catalog-Pipeline erstellt wurden.

Anforderungen

Folgendes ist erforderlich, um Tabellen in Unity Catalog aus einer Delta Live Tables-Pipeline zu erstellen:

  • Sie müssen über USE CATALOG-Berechtigungen für den Zielkatalog verfügen.
  • Sie müssen über CREATE MATERIALIZED VIEW- und USE SCHEMA-Berechtigungen für das Zielschema verfügen, wenn Ihre Pipeline materialisierte Sichten erstellt.
  • Sie müssen über CREATE TABLE- und USE SCHEMA-Berechtigungen für das Zielschema verfügen, wenn Ihre Pipeline Streamingtabellen erstellt.
  • Wenn in den Pipelineeinstellungen kein Zielschema angegeben ist, müssen Sie über CREATE MATERIALIZED VIEW- und CREATE TABLE-Berechtigungen für mindestens ein Schema im Zielkatalog verfügen.

Einschränkungen

Im Folgenden sind Einschränkungen bei der Verwendung von Unity Catalog mit Delta Live Tables aufgeführt:

  • Standardmäßig haben nur Pipeline-Eigentümer*innen und die Arbeitsbereichsadministrator*innen die Berechtigung, die Treiberprotokolle des Clusters einzusehen, in dem eine Unity Catalog-fähige Pipeline läuft. Um anderen Benutzer*innen den Zugriff auf die Treiberprotokolle zu ermöglichen, lesen Sie den Abschnitt Nicht-Administrator*innen den Zugriff auf die Treiberprotokolle aus einer Unity Catalog-aktivierten Pipeline erlauben.

  • 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 Metastore angefügt ist, der während der öffentlichen Unity Catalog-Vorschau erstellt wurde. Siehe Upgrade auf Berechtigungsvererbung.

  • Bibliotheken von Drittanbietern und JARs werden nicht unterstützt.

  • DML-Abfragen (Data Manipulation Language), die das Schema einer Streamingtabelle ändern, werden nicht unterstützt.

  • Eine materialisierte Sicht, die in einer Delta Live Tables-Pipeline erstellt wurde, kann nicht als Streamingquelle außerhalb der jeweiligen Pipeline verwendet werden, z. B. in einer anderen Pipeline oder in einem Downstreamnotebook.

  • Die Veröffentlichung in Schemas, die einen verwalteten Speicherort angeben, wird nur im Vorschaukanal unterstützt.

  • 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.

  • Wenn das Zielschema einen Speicherort angibt, werden alle Tabellen dort gespeichert. Falls kein Schemaspeicherort angegeben ist, werden alle Tabellen im Speicherort des Katalogs gespeichert, wenn der Zielkatalog einen solchen angibt. Wenn weder ein Schema- noch ein Katalogspeicherort angegeben werden, werden Tabellen im Stammspeicherort des Metastores gespeichert, in dem die Tabellen veröffentlicht werden.

  • Die Registerkarte Verlauf im Katalog-Explorer zeigt keinen Verlauf für Streamingtabellen und materialisierte Sichten.

  • 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. Um Python-UDFs verwenden zu können, muss Ihre Pipeline den Vorschaukanal nutzen.

  • Sie können Delta Sharing nicht mit einer materialisierten Delta Live Tables-Sicht oder Streamingtabelle verwenden, die in Unity Catalog veröffentlicht wurde.

  • Sie können die event_logTabellenwertfunktion in einer Pipeline oder Abfrage nicht verwenden, um auf die Ereignisprotokolle mehrerer Pipelines zuzugreifen.

  • Sie können eine Ansicht, die über die event_logTabellenwertfunktion erstellt wurde, nicht für andere Benutzer freigeben.

  • 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. Achten Sie in diesem Fall darauf, dass Sie mindestens einen Worker angeben, wenn Sie Ihre Computeeinstellungen konfigurieren.

  • Tabellen, die in einer Unity Catalog-fähigen Pipeline erstellt wurden, können nicht von zugewiesenen oder nicht isolierten Clustern abgefragt werden. Zum Abfragen von Tabellen, die von einer Delta Live Tables-Pipeline erstellt wurden, müssen Sie einen Cluster mit gemeinsamem Zugriff mit Databricks Runtime 13.1 und höher oder ein SQL-Warehouse verwenden.

  • Delta Live Tables verwendet einen Cluster mit gemeinsamem Zugriff, um eine Unity Catalog-fähige Pipeline auszuführen. Eine Unity Catalog-fähige Pipeline kann nicht auf einem zugewiesenen Cluster ausgeführt werden. Weitere Informationen zu den Einschränkungen des gemeinsamen Zugriffsmodus mit Unity Catalog finden Sie unter Einschränkungen des gemeinsamen Zugriffsmodus in Unity Catalog.

  • Sie können Zeilenfilter oder Spaltenmasken nicht mit materialisierten Sichten oder Streamingtabellen verwenden, die in Unity Catalog veröffentlicht wurden.

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, die Definition einer materialisierten Sicht enthält eine Klausel COUNT(DISTINCT field_a). 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.

Ä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 bestimmten Zeitraum aufbewahrt, sodass sie wiederhergestellt werden können, wenn sie versehentlich gelöscht wurden. Die Daten können wiederhergestellt werden, indem die materialisierte Sicht oder die Streamingtabelle wieder in die Pipelinedefinition aufgenommen wird.
  • Durch das Löschen der Delta Live Tables-Pipeline werden alle in dieser Pipeline definierten Tabellen gelöscht. Aufgrund dieser Änderung wird die Delta Live Tables-Benutzeroberfläche aktualisiert, sodass Sie aufgefordert werden, die Löschung einer Pipeline zu bestätigen.
  • Interne Unterstützungstabellen, einschließlich solcher, die zur Unterstützung von APPLY CHANGES INTO verwendet werden, sind für Benutzer nicht direkt zugänglich.

Schreiben von Tabellen in Unity Catalog aus einer Delta Live Tables-Pipeline

Um Ihre Tabellen in Unity Catalog zu schreiben, wählen Sie beim Erstellen einer Pipeline den Eintrag Unity Catalog unter Storage options (Speicheroptionen), einen Katalog im Dropdownmenü Catalog (Katalog) und abschließend einen Datenbanknamen im Dropdownmenü Target schema (Zielschema) aus. Informationen zu Unity Catalog-Katalogen finden Sie unter Kataloge. Informationen zu Schemas in Unity Catalog finden Sie unter Schemas.

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 cloud_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 LIVE TABLE
  table_name
AS SELECT
  *
FROM
  my_catalog.my_schema.table1;

Python

@dlt.table
def table_name():
  return spark.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 LIVE TABLE
  table_name
AS SELECT
  *
FROM
  hive_metastore.some_schema.table;

Python

@dlt.table
def table3():
  return spark.table("hive_metastore.some_schema.table")

Erfassen von Daten aus dem Autoloader

SQL

CREATE OR REFRESH STREAMING TABLE
  table_name
AS SELECT
  *
FROM
  cloud_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}")
 )

Freigeben materialisierter Sichten (Livetabellen)

Standardmäßig können die von einer Pipeline erstellten Tabellen nur vom Pipelinebesitzer abgefragt werden. 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.live_table
TO
  `user@databricks.com`

Widerrufen einer Auswahl für eine Tabelle

REVOKE SELECT ON TABLE
  my_catalog.my_schema.live_table
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. Für materialisierte Sichten oder Streamingtabellen in einer Unity Catalog-fähigen Pipeline zeigt die Herkunftsbenutzeroberfläche des Katalog-Explorers die Upstream- und Downstreamtabellen 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

Sie können DML-Anweisungen (Data Manipulation Language), einschließlich Insert-, Update-, Delete- und Merge-Anweisungen, verwenden, um in Unity Catalog veröffentlichte Streamingtabellen zu ändern. Die Unterstützung von DML-Abfragen für Streamingtabellen ermöglicht Anwendungsfälle wie das Aktualisieren von Tabellen zur 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.1 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;