Delen via


Unity Catalog gebruiken met uw DLT-pijplijnen

Belangrijk

DLT-ondersteuning voor Unity Catalog bevindt zich in Public Preview.

Databricks raadt aan DLT-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 andere Unity Catalog-tabellen en -volumes lezen.

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 voor het doelschema als uw pijplijn gematerialiseerde weergavenmaakt.
  • CREATE TABLE en USE SCHEMA bevoegdheden voor het doelschema indien uw pijplijn streaming-tabellen maakt.

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 DLT-pijplijn met behulp van Unity Catalog (inclusief streamingtabellen en gerealiseerde weergaven) omvat een van de volgende opties:

  • SQL-magazijnen
  • Standaardtoegangsmodus berekenen op Databricks Runtime 13.3 LTS of hoger.
  • Berekening van toegewezen toegangsmodus, als fijnmazig toegangsbeheer is ingeschakeld op de toegewezen rekenkracht (dat wil gezegd, deze wordt uitgevoerd op Databricks Runtime 15.4 of hoger en serverloze rekenkracht is ingeschakeld voor de werkruimte). Voor meer informatie, zie Fijnmazige toegangsbeheer voor toegewezen rekenkracht (voorheen rekenkracht van één gebruiker).
  • Toegewijde toegangsmode-computing op 13.3 LTS tot en met 15.3, alleen indien de eigenaar van de tabel de query uitvoert.

Aanvullende rekenbeperkingen zijn van toepassing. Zie de volgende sectie.

beperkingen voor

Hier volgen beperkingen bij het gebruik van Unity Catalog met DLT:

  • 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 DLT-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 DLT-pijplijn, kan niet worden gebruikt als streamingbron buiten die pijplijn, bijvoorbeeld in een andere pijplijn of een downstream-notebook.
  • Gegevens voor gerealiseerde weergaven en streamingtabellen worden opgeslagen in de opslaglocatie van het bijbehorende schema. 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 gematerialiseerde views.
  • 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.
  • U kunt Delta Sharing- niet gebruiken met een gerealiseerde DLT-weergave of streamingtabel die in de Unity Catalog is gepubliceerd.

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) clausule bevat. Hoewel de gerealiseerde weergave alleen de aggregatie COUNT DISTINCT-clausule bevat, zullen de onderliggende bestanden een lijst met de werkelijke waarden van field_abevatten.

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 DLT-functionaliteit 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 DLT is geconfigureerd voor het behouden van gegevens in Unity Catalog, beheert de DLT-pijplijn de levenscyclus en machtigingen van de tabel. Als gevolg hiervan:

  • Wanneer een tabel uit de pijplijndefinitie wordt verwijderd, markeert de volgende pijplijnupdate de bijbehorende gerealiseerde weergave of de invoer van de streamingtabel inactief. Inactieve tabellen kunnen nog steeds worden opgevraagd, maar worden niet bijgewerkt. Als u gerealiseerde weergaven of streamingtabellen wilt opschonen, kunt u de tabel expliciet DROP.
    • U kunt verwijderde tabellen binnen 7 dagen herstellen met behulp van de opdracht UNDROP.
    • Als u het oorspronkelijke gedrag wilt behouden waarbij de materialized view of streaming-tabelvermelding wordt verwijderd uit de Unity Catalog bij de volgende pijplijnupdate, stelt u de pijplijnconfiguratie in op "pipelines.dropInactiveTables": "true". De werkelijke gegevens worden gedurende een periode bewaard, zodat deze per ongeluk kunnen worden hersteld. De gegevens kunnen binnen 7 dagen worden hersteld door de gerealiseerde weergave of streamingtabel weer toe te voegen aan de pijplijndefinitie.
  • Het verwijderen van de DLT-pijplijn resulteert in het verwijderen van alle tabellen die in die pijplijn zijn gedefinieerd. Vanwege deze wijziging wordt de DLT-gebruikersinterface bijgewerkt om u te vragen de verwijdering 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 DLT-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 pijplijn maakt, selecteert u Unity Catalog onder Opslagopties, selecteert u een catalogus in het Catalogus dropdownmenu en selecteert u een bestaand schema of voert u de naam in voor een nieuw schema in het Doelschema dropdownmenu. Raadpleeg Wat zijn catalogi in Azure Databricks?voor meer informatie over catalogi in Unity Catalog. 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, views, gematerialiseerde weergaven en streamingtabellen.
  • Hive-metastore-tabellen en -weergaven.
  • Auto Loader met de read_files()-functie om te lezen vanaf externe locaties in 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 inlezen met Auto Loader

SQL

CREATE OR REFRESH STREAMING TABLE table_name
AS SELECT *
FROM STREAM read_files(
  "/path/to/uc/external/location",
  format => "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 voor het maken van een tabel of een gematerialiseerde weergave

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

De herkomst van een pijplijn weergeven

Herkomst voor tabellen in een DLT-pijplijn is zichtbaar in Catalog Explorer. In de lineage-gebruikersinterface van Catalog Explorer worden de upstream- en downstreamtabellen weergegeven voor gerealiseerde weergaven of streamingtabellen in een pijplijn met Unity Catalog. Voor meer informatie over de herkomst van Unity Catalog, zie Gegevensherkomst vastleggen en weergeven met behulp van Unity Catalog.

Voor een gerealiseerde weergave of streamingtabel in een DLT-pijplijn met Unity-catalogus 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 streamingtabellen maakt toepassingsmogelijkheden mogelijk, zoals het bijwerken van tabellen ter 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 uitsluitend gegevensbronnen die alleen toevoegen vereist, stelt u bij het lezen van de bronstreamingtabel de vlag SkipChangeCommits in, als er gestreamd moet worden 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 bevindt zich in openbare preview-versie.

rijfilters kunt u een functie opgeven die van toepassing is als filter wanneer een tabelscan rijen ophaalt. Deze filters zorgen ervoor dat volgende queries alleen rijen retourneren waarvoor de voorwaarde van de filter als waar beoordeeld wordt.

Met 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 gematerialiseerde weergaven en streamingtabellen moeten via de instructie CREATE OR REFRESH worden toegevoegd, bijgewerkt of verwijderd.

Zie voor gedetailleerde syntaxis voor het definiëren van tabellen met rijfilters en kolommaskers DLT SQL-taalreferenties en DLT Python-taalreferentie.

Gedrag

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

  • Vernieuwen als eigenaar: Wanneer een update van de pijplijn een gematerialiseerde weergave of streamingtabel vernieuwt, worden rijfilter- en kolommaskerfuncties 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.

Observeerbaarheid

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 auditen en evalueren op gematerialiseerde weergaven en streamingtabellen.