Delen via


Unity Catalog gebruiken met uw Delta Live Tables-pijplijnen

Belangrijk

Ondersteuning voor Delta Live Tables voor Unity Catalog bevindt zich in openbare preview-.

Databricks raadt u aan delta live tables-pijplijnen te configureren met Unity Catalog.

Pijplijnen die zijn geconfigureerd met Unity Catalog publiceren alle gedefinieerde gerealiseerde weergaven en streamingtabellen naar de opgegeven catalogus en het opgegeven schema. Unity Catalog-pijplijnen kunnen lezen uit andere Unity Catalog-tabellen en -volumes.

Als u machtigingen wilt beheren voor de tabellen die zijn gemaakt door een Unity Catalog-pijplijn, gebruikt u GRANT en REVOKE.

Notitie

In dit artikel wordt de functionaliteit voor de huidige standaardpublicatiemodus voor pijplijnen besproken. Pijplijnen die vóór 5 februari 2025 zijn gemaakt, kunnen gebruikmaken van de verouderde publicatiemodus en LIVE virtueel schema. Zie LIVE-schema (verouderd).

vereisten voor

Als u streamingtabellen en gerealiseerde weergaven wilt maken in een doelschema in Unity Catalog, moet u de volgende machtigingen hebben voor het schema en de bovenliggende catalogus:

  • USE CATALOG bevoegdheden voor de doelcatalogus.
  • CREATE MATERIALIZED VIEW en USE SCHEMA bevoegdheden op het doelschema als uw pijplijn gematerialiseerde weergavenmaakt.
  • CREATE TABLE en USE SCHEMA bevoegdheden voor het doelschema als uw pijplijn streamingtabellenmaakt.

Als uw pijplijn nieuwe schema's maakt, moet u USE CATALOG en CREATE SCHEMA bevoegdheden voor de doelcatalogus hebben.

Rekenkracht die is vereist voor het uitvoeren van een Unity Catalog-pijplijn:

Rekenkracht die nodig is om query's uit te voeren op tabellen die zijn gemaakt door een Delta Live Tables-pijplijn met behulp van Unity Catalog (inclusief streamingtabellen en gerealiseerde weergaven) omvat een van de volgende opties:

  • SQL-magazijnen
  • Gedeelde toegangsmodusclusters in Databricks Runtime 13.3 LTS of hoger.
  • Clusters met toegangsmodus voor één gebruiker (of 'toegewezen') als fijnmazig toegangsbeheer is ingeschakeld op het cluster met één gebruiker (dat wil gezegd: het cluster wordt uitgevoerd op Databricks Runtime 15.4 of hoger en serverloze rekenkracht is ingeschakeld voor de werkruimte). Zie Fijnmazig toegangsbeheer voor rekenkracht van één gebruiker voor meer informatie.
  • Toegangsmodusclusters met één gebruiker (of 'toegewezen') op 13.3 LTS tot en met 15.3, alleen als de eigenaar van de tabel de query uitvoert.

Aanvullende rekenbeperkingen zijn van toepassing. Zie de volgende sectie.

Beperkingen

Hier volgen beperkingen bij het gebruik van Unity Catalog met Delta Live Tables:

  • Standaard kunnen alleen de eigenaar van de pijplijn en werkruimtebeheerders de stuurprogrammalogboeken bekijken vanuit het cluster waarop een Unity Catalog-pijplijn wordt uitgevoerd. Als u andere gebruikers toegang wilt geven tot de stuurprogrammalogboeken, raadpleegt u Niet-beheerders toestaan om de stuurprogrammalogboeken te bekijken vanuit een pijplijn met Unity Catalog-functionaliteit.

  • Bestaande pijplijnen die gebruikmaken van de Hive-metastore kunnen niet worden bijgewerkt om Unity Catalog te gebruiken. Als u een bestaande pijplijn wilt migreren die naar hive-metastore schrijft, moet u een nieuwe pijplijn maken en gegevens opnieuw opnemen uit de gegevensbron(en). Zie Een Unity Catalog-pijplijn maken door een Hive-metastore-pijplijnte klonen.

  • U kunt geen Unity Catalog-pijplijn maken in een werkruimte die is gekoppeld aan een metastore die is gemaakt tijdens de openbare preview van de Unity-catalogus. Zie Upgraden naar overname van bevoegdheden.

  • JAR's worden niet ondersteund. Alleen Python-bibliotheken van derden worden ondersteund. Zie Python-afhankelijkheden beheren voor Delta Live Tables-pijplijnen.

  • DML-query's (Data Manipulat Language) die het schema van een streamingtabel wijzigen, worden niet ondersteund.

  • Een gerealiseerde weergave die is gemaakt in een Delta Live Tables-pijplijn kan niet worden gebruikt als streamingbron buiten die pijplijn, bijvoorbeeld in een andere pijplijn of een downstream-notebook.

  • Gegevens voor materiële weergaven en streamingtabellen worden opgeslagen in de opslaglocatie van het schema waar het deel van uitmaakt. Als er geen schemaopslaglocatie is opgegeven, worden tabellen opgeslagen in de opslaglocatie van de catalogus. Als er geen schema- en catalogusopslaglocaties zijn opgegeven, worden tabellen opgeslagen in de hoofdopslaglocatie van de metastore.

  • Het tabblad Catalogusverkenner Geschiedenis toont geen geschiedenis voor gerealiseerde weergaven.

  • De eigenschap LOCATION wordt niet ondersteund bij het definiëren van een tabel.

  • Pijplijnen met Unity Catalog kunnen niet worden gepubliceerd naar de Hive-metastore.

  • Python UDF-ondersteuning bevindt zich in openbare preview.

  • U kunt Delta Sharing- niet gebruiken met een materiële weergave of streamingtabel van Delta Live Tables die is gepubliceerd in Unity Catalog.

  • U kunt de event_logtabelwaardefunctie niet gebruiken in een pijplijn of query om toegang te krijgen tot de gebeurtenislogboeken van meerdere pijplijnen.

  • U kunt geen weergave delen die is gemaakt via de event_logtabelwaardefunctie met andere gebruikers.

Notitie

De onderliggende bestanden die gerealiseerde weergaven ondersteunen, bevatten mogelijk gegevens uit upstreamtabellen (inclusief mogelijke persoonsgegevens) die niet worden weergegeven in de gerealiseerde weergavedefinitie. Deze gegevens worden automatisch toegevoegd aan de onderliggende opslag ter ondersteuning van incrementeel vernieuwen van gerealiseerde weergaven.

Omdat de onderliggende bestanden van een gerealiseerde weergave mogelijk risico lopen dat gegevens uit upstream-tabellen worden weergegeven die geen deel uitmaken van het gerealiseerde weergaveschema, raadt Databricks aan om de onderliggende opslag niet te delen met niet-vertrouwde downstreamgebruikers.

Stel dat een gerealiseerde weergavedefinitie een COUNT(DISTINCT field_a) component bevat. Hoewel de gerealiseerde weergavedefinitie alleen de aggregatie COUNT DISTINCT clausule bevat, zullen de onderliggende bestanden een lijst bevatten met de daadwerkelijke waarden van field_a.

Kan ik hive-metastore- en Unity Catalog-pijplijnen samen gebruiken?

Uw werkruimte kan pijplijnen bevatten die gebruikmaken van Unity Catalog en de verouderde Hive-metastore. Eén pijplijn kan echter niet schrijven naar de Hive-metastore en Unity Catalog. Bestaande pijplijnen die naar de Hive-metastore schrijven, kunnen niet worden bijgewerkt om Unity Catalog te gebruiken. Als u een bestaande pijplijn wilt migreren die naar hive-metastore schrijft, moet u een nieuwe pijplijn maken en gegevens opnieuw opnemen uit de gegevensbron(en). Zie Een Unity Catalog-pijplijn maken door een Hive-metastore-pijplijnte klonen.

Bestaande pijplijnen die niet gebruikmaken van Unity Catalog, worden niet beïnvloed door het maken van nieuwe pijplijnen die zijn geconfigureerd met Unity Catalog. Deze pijplijnen blijven gegevens behouden in de Hive-metastore met behulp van de geconfigureerde opslaglocatie.

Tenzij anders is opgegeven in dit document, worden alle bestaande gegevensbronnen en delta livetabellen ondersteund met pijplijnen die gebruikmaken van Unity Catalog. Zowel de Python-- als SQL-interfaces worden ondersteund met pijplijnen die gebruikmaken van Unity Catalog.

Wijzigingen in bestaande functionaliteit

Wanneer Delta Live Tables is geconfigureerd voor het behouden van gegevens in Unity Catalog, wordt de levenscyclus van de tabel beheerd door de Delta Live Tables-pijplijn. Omdat de pijplijn de levenscyclus en machtigingen van de tabel beheert:

  • Wanneer een tabel wordt verwijderd uit de definitie van de Delta Live Tables-pijplijn, wordt de bijbehorende gerealiseerde weergave of streamingtabelvermelding verwijderd uit Unity Catalog bij de volgende pijplijnupdate. De werkelijke gegevens worden gedurende een periode bewaard, zodat deze per ongeluk kunnen worden hersteld. De gegevens kunnen worden hersteld door de gerealiseerde weergave of streamingtabel weer toe te voegen aan de pijplijndefinitie.
  • Het verwijderen van de Delta Live Tables-pijplijn resulteert in het verwijderen van alle tabellen die in die pijplijn zijn gedefinieerd. Vanwege deze wijziging wordt de gebruikersinterface van Delta Live Tables bijgewerkt om u te vragen om het verwijderen van een pijplijn te bevestigen.
  • Interne backingtabellen, inclusief de tabellen die worden gebruikt ter ondersteuning van APPLY CHANGES INTO, zijn niet rechtstreeks toegankelijk voor gebruikers.

tabellen schrijven naar Unity Catalog vanuit een Delta Live Tables-pijplijn

Als u uw tabellen naar Unity Catalog wilt schrijven, moet u uw pijplijn configureren om ermee te werken via uw werkruimte. Wanneer u een pijplijnmaakt, selecteert u onder Opslagoptiesde Unity Catalog, selecteert u een catalogus in de vervolgkeuzelijst Catalogus, en selecteert u een bestaand schema of voert u de naam in voor een nieuw schema in de vervolgkeuzelijst Doelschema. Zie voor meer informatie over Unity Catalog catalogi Wat zijn catalogi in Azure Databricks?. Zie Wat zijn schema's in Azure Databricks voor meer informatie over schema's in Unity Catalog?.

gegevens opnemen in een Unity Catalog-pijplijn

Uw pijplijn die is geconfigureerd voor het gebruik van Unity Catalog, kan gegevens lezen uit:

  • Beheerde en externe tabellen van Unity Catalog, weergaven, gematerialiseerde weergaven, en streamingtabellen.
  • Hive-metastore-tabellen en -weergaven.
  • Automatisch laden met de read_files()-functie om te lezen van externe locaties in de Unity Catalog.
  • Apache Kafka en Amazon Kinesis.

Hieronder ziet u voorbeelden van het lezen uit Unity Catalog- en Hive-metastore-tabellen.

Batchopname uit een Unity Catalog-tabel

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")

Wijzigingen streamen vanuit een Unity Catalog-tabel

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")

Gegevens opnemen uit hive-metastore

Een pijplijn die gebruikmaakt van Unity Catalog kan gegevens lezen uit Hive-metastoretabellen met behulp van de hive_metastore-catalogus:

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")

Gegevens opnemen van automatisch laden

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}")
 )

Gematerialiseerde weergaven delen

Standaard is alleen de eigenaar van de pijplijn gemachtigd om query's uit te voeren op gegevenssets die door de pijplijn zijn gemaakt. U kunt andere gebruikers de mogelijkheid geven om een query uit te voeren op een tabel met behulp van GRANT instructies en u kunt querytoegang intrekken met behulp van REVOKE instructies. Zie Bevoegdheden beheren in Unity Catalogvoor meer informatie over bevoegdheden in Unity Catalog.

Verleen select-rechten op een tabel

GRANT SELECT ON TABLE
  my_catalog.my_schema.table_name
TO
  `user@databricks.com`

Selectie intrekken voor een tabel

REVOKE SELECT ON TABLE
  my_catalog.my_schema.table_name
FROM
  `user@databricks.com`

Verleen bevoegdheden om een tabel of een gematerialiseerde view te maken.

GRANT CREATE { MATERIALIZED VIEW | TABLE } ON SCHEMA
  my_catalog.my_schema
TO
  { principal | user }

Herkomst voor een pijplijn weergeven

Herkomst voor tabellen in een Delta Live Tables-pijplijn is zichtbaar in Catalog Explorer. In de lineage-interface van Catalog Explorer worden de upstream- en downstreamtabellen weergegeven voor gerealiseerde weergaven of streamingtabellen in een pijplijn met Unity Catalog-ondersteuning. Om meer te leren over gegevensafstamming met Unity Catalog, zie Gegevensherkomst vastleggen en weergeven met behulp van Unity Catalog.

Voor een gerealiseerde weergave of streamingtabel in een Delta Live Tables-pijplijn met Unity Catalog-functionaliteit, wordt de lineage-UI van Catalog Explorer ook gekoppeld aan de pijplijn die de gerealiseerde weergave of streamingtabel heeft geproduceerd als de pijplijn toegankelijk is vanuit de huidige werkruimte.

gegevens toevoegen, wijzigen of verwijderen in een streamingtabel

U kunt DML-instructies (Data Manipulat Language) gebruiken, waaronder invoeg-, update-, verwijder- en samenvoeginstructies om streamingtabellen te wijzigen die zijn gepubliceerd naar Unity Catalog. Ondersteuning voor DML-query's voor streaming-tabellen maakt gebruiksscenario's mogelijk, zoals het bijwerken van tabellen voor naleving van de AVG (Algemene verordening gegevensbescherming).

Notitie

  • DML-instructies die het tabelschema van een streamingtabel wijzigen, worden niet ondersteund. Zorg ervoor dat uw DML-instructies niet proberen het tabelschema te ontwikkelen.
  • DML-instructies die een streamingtabel bijwerken, kunnen alleen worden uitgevoerd in een gedeeld Unity Catalog-cluster of een SQL-warehouse met Databricks Runtime 13.3 LTS en hoger.
  • Omdat streaming alleen met toevoeggegevensbronnen werkt, moet u de SkipChangeCommits-vlag instellen bij het lezen van de bronstreamingtabel als uw verwerking vereist dat er wordt gestreamd vanuit een streamingtabel met wijzigingen (bijvoorbeeld door DML-instructies). Wanneer skipChangeCommits is ingesteld, worden transacties die records in de brontabel verwijderen of wijzigen genegeerd. Als voor uw verwerking geen streamingtabel is vereist, kunt u een gerealiseerde weergave (die niet beschikt over de beperking voor alleen toevoegen) gebruiken als doeltabel.

Hier volgen voorbeelden van DML-instructies voor het wijzigen van records in een streamingtabel.

Records verwijderen met een specifieke id:

DELETE FROM my_streaming_table WHERE id = 123;

Records bijwerken met een specifieke id:

UPDATE my_streaming_table SET name = 'Jane Doe' WHERE id = 123;

Tabellen publiceren met rijfilters en kolommaskers

Belangrijk

Deze functie is beschikbaar als openbare preview.

rijfilters kunt u een functie opgeven die van toepassing is als filter wanneer een tabelscan rijen ophaalt. Deze filters zorgen ervoor dat volgende query's alleen rijen retourneren waarvoor het filterpredicaat waar wordt geëvalueerd.

kolommaskers kunt u de waarden van een kolom maskeren wanneer een tabelscan rijen ophaalt. Toekomstige query's voor die kolom retourneren het resultaat van de geëvalueerde functie in plaats van de oorspronkelijke waarde van de kolom. Zie Gevoelige tabelgegevens filteren met rijfilters en kolommaskersvoor meer informatie over het gebruik van rijfilters en kolommaskers.

Rijfilters en kolommaskers beheren

Rijfilters en kolommaskers voor gerealiseerde weergaven en streamingtabellen moeten worden toegevoegd, bijgewerkt of verwijderd via de instructie CREATE OR REFRESH.

Zie voor gedetailleerde syntaxis voor het definiëren van tabellen met rijfilters en kolommaskers SQL-taalreferentie voor Delta Live Tables en Python-taalreferentie voor Delta Live Tables.

Gedrag

Hieronder vindt u belangrijke informatie bij het gebruik van rijfilters of kolommaskers in Delta Live Tables-pijplijnen:

  • vernieuwen als eigenaar: wanneer een pijplijnupdate een gerealiseerde weergave of streamingtabel vernieuwt, worden functies voor rijfilters en kolommaskers uitgevoerd met de rechten van de eigenaar van de pijplijn. Dit betekent dat de tabelvernieuwing gebruikmaakt van de beveiligingscontext van de gebruiker die de pijplijn heeft gemaakt. Functies die de gebruikerscontext controleren (zoals CURRENT_USER en IS_MEMBER) worden geëvalueerd met behulp van de gebruikerscontext van de pijplijneigenaar.
  • Query: bij het uitvoeren van query's op een gerealiseerde weergave of streamingtabel worden functies die de gebruikerscontext (zoals CURRENT_USER en IS_MEMBER) controleren, geëvalueerd met behulp van de gebruikerscontext van de aanroeper. Deze aanpak dwingt gebruikersspecifieke gegevensbeveiliging en toegangsbeheer af op basis van de context van de huidige gebruiker.
  • Bij het maken van gerealiseerde weergaven over brontabellen die rijfilters en kolommaskers bevatten, is het vernieuwen van de gerealiseerde weergave altijd een volledige vernieuwing. Met een volledige vernieuwing worden alle gegevens die beschikbaar zijn in de bron, opnieuw verwerkt met de meest recente definities. Met dit proces wordt gecontroleerd of beveiligingsbeleid voor de brontabellen wordt geëvalueerd en toegepast met de meest up-to-datumgegevens en -definities.

Waarneembaarheid

Gebruik DESCRIBE EXTENDED, INFORMATION_SCHEMAof Catalog Explorer om de bestaande rijfilters en kolommaskers te onderzoeken die van toepassing zijn op een bepaalde gerealiseerde weergave of streamingtabel. Met deze functionaliteit kunnen gebruikers gegevenstoegang en beveiligingsmaatregelen auditeren en controleren voor gematerialiseerde weergaven en streamingtabellen.