Delen via


Unity Catalog gebruiken met uw Delta Live Tables-pijplijnen

Belangrijk

Ondersteuning voor Delta Live Tables voor Unity Catalog is 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.

Vereisten

Vereiste machtigingen voor het maken van tabellen in Unity Catalog vanuit een Delta Live Tables-pijplijn:

  • USE CATALOG bevoegdheden voor de doelcatalogus.
  • CREATE MATERIALIZED VIEWen USE SCHEMA bevoegdheden voor het doelschema als uw pijplijn gerealiseerde weergaven maakt.
  • CREATE TABLEen USE SCHEMA bevoegdheden voor het doelschema als uw pijplijn streamingtabellen maakt.
  • Als een doelschema niet is opgegeven in de pijplijninstellingen, moet u ten minste één schema in de doelcatalogus hebben of CREATE TABLE er bevoegdheden voor hebbenCREATE MATERIALIZED VIEW.

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 van een Unity Catalog-pijplijn weer te geven.

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

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

  • Als een pijplijn naar een schema met een beheerde opslaglocatie publiceert, kan het schema worden gewijzigd in een volgende update, maar alleen als het bijgewerkte schema dezelfde opslaglocatie gebruikt als het eerder opgegeven schema.

  • Tabellen worden opgeslagen in de opslaglocatie voor het doelschema. 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.

  • Op het tabblad Geschiedenis van Catalogusverkenner wordt geen geschiedenis weergegeven voor streamingtabellen of gerealiseerde weergaven.

  • De LOCATION eigenschap 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 gerealiseerde weergave of streamingtabel van Delta Live Tables die is gepubliceerd naar Unity Catalog.

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

  • U kunt een weergave die is gemaakt via de event_log functie met tabelwaarden, niet delen met andere gebruikers.

  • Clusters met één knooppunt worden niet ondersteund met pijplijnen met Unity Catalog. Omdat Delta Live Tables mogelijk een cluster met één knooppunt maakt om kleinere pijplijnen uit te voeren, kan uw pijplijn mislukken met een foutbericht waarnaar wordt verwezen single-node mode. Als dit gebeurt, geeft u ten minste één werkrol op wanneer u rekenkracht configureert. Zie Compute configureren voor een Delta Live Tables-pijplijn.

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 statistische COUNT DISTINCT component bevat, bevatten de onderliggende bestanden een lijst met de werkelijke 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.

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 automatisering 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 >st 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, waaronder de tabellen die worden gebruikt ter ondersteuning APPLY CHANGES INTO, zijn niet rechtstreeks toegankelijk voor gebruikers.

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

Notitie

Als u geen catalogus en doelschema voor een pijplijn selecteert, worden tabellen niet gepubliceerd naar Unity Catalog en kunnen ze alleen worden geopend door query's in dezelfde pijplijn.

Als u uw tabellen naar Unity Catalog wilt schrijven, selecteert u Unity Catalog onder Opslagopties, 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 Wat zijn catalogi in Azure Databricks voor meer informatie over Unity Catalog-catalogi. 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, gerealiseerde weergaven en streamingtabellen.
  • Hive-metastore-tabellen en -weergaven.
  • Automatisch laden met behulp van de read_files() functie om te lezen vanuit externe locaties van 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.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-metastore-tabellen 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.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}")
 )

Gerealiseerde 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 Catalog voor meer informatie over bevoegdheden in Unity Catalog.

Toekenning selecteren in 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`

Tabel maken verlenen of gerealiseerde weergavebevoegdheden 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-gebruikersinterface van Catalog Explorer worden de upstream- en downstreamtabellen weergegeven voor gerealiseerde weergaven of streamingtabellen in een pijplijn met Unity Catalog. Zie Gegevensherkomst vastleggen en weergeven met behulp van Unity Catalog voor meer informatie over herkomst 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 streamingtabellen maakt gebruiksvoorbeelden mogelijk, zoals het bijwerken van tabellen voor naleving van de Avg (General Data Protection Regulation).

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 toevoeggegevensbronnen vereist, stelt u de vlag skipChangeCommits in bij het lezen van de bronstreamingtabel wanneer u de bronstreamingtabel leest. Wanneer skipChangeCommits deze 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.

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

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 kolommaskers voor 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 CREATE OR REFRESH instructie.

Zie voor gedetailleerde syntaxis voor het definiëren van tabellen met rijfilters en kolommaskers de sql-taalreferentie voor Delta Live Tables en de 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 controleren (zoals CURRENT_USER en IS_MEMBER) 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 recente gegevens 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 controleren en controleren op gerealiseerde weergaven en streamingtabellen.