Unity-Catalog gebruiken met uw Delta Live Tables-pijplijnen
Belangrijk
Ondersteuning voor Delta Live Tables voor Unity Catalog bevindt zich in publieke preview-.
Databricks raadt het configureren van Delta Live-Tables-pijplijnen aan met Unity Catalog.
Pijplijnen die zijn geconfigureerd met Unity Catalog publiceren alle gedefinieerde gematerialiseerde views en streaming-tables naar de opgegeven catalog en schema. Unity Catalog-pijplijnen kunnen lezen uit andere Unity-Catalogtables en volumes.
Gebruik GRANT en REVOKEom machtigingen te beheren voor de tables die zijn gemaakt door een Unity Catalog-pijplijn.
Vereisten
Vereiste machtigingen voor het maken van tables in Unity Catalog vanuit een Delta Live-Tables-pijplijn:
-
USE CATALOG
bevoegdheden voor de doel-catalog. -
CREATE MATERIALIZED VIEW
enUSE SCHEMA
bevoegdheden voor de doel-schema als uw pijplijn gerealiseerde viewsmaakt. -
CREATE TABLE
enUSE SCHEMA
bevoegdheden voor het doel schema als uw pijplijn streaming-tablesmaakt. - Als een doel-schema niet is opgegeven in de pijplijninstellingen, moet u
CREATE MATERIALIZED VIEW
ofCREATE TABLE
bevoegdheden hebben op ten minste één schema in de doel-catalog.
Rekenkracht die is vereist voor het uitvoeren van een Unity Catalog-pijplijn:
- Gedeelde toegangsmodusclusters. Een Unity Catalog-enabled pipeline kan niet worden uitgevoerd op één gebruiker (toegewezen) cluster. Zie beperkingen voor gedeelde toegangsmodus voor Unity Catalog.
Rekenkracht die nodig is om query's uit te voeren op tables die zijn gemaakt door een Delta Live-Tables-pijplijn met behulp van Unity Catalog (inclusief streaming tables en gerealiseerde views) bevat 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 table eigenaar 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, raadpleeg dan Niet-beheerders toestaan om stuurprogrammalogboeken te bekijken van een Unity-Catalog-pijplijn.
Bestaande pijplijnen die gebruikmaken van de Hive-metastore kunnen niet worden bijgewerkt om Unity Catalogte 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-enabled pijplijn maken in een werkruimte die is gekoppeld aan een metastore die is gemaakt tijdens de Unity Catalog Public Preview. 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 de schema van een streaming-table 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 de schema in een volgende updateworden gewijzigd, maar alleen als de bijgewerkte schema dezelfde opslaglocatie gebruikt als de eerder opgegeven schema.
Tables worden opgeslagen in de opslaglocatie voor de doel-schema. Als er geen schema opslaglocatie is opgegeven, worden tables opgeslagen in de catalog opslaglocatie. Als schema en catalog opslaglocaties niet zijn opgegeven, worden tables opgeslagen in de hoofdopslaglocatie van de metastore.
Op het tabblad Catalog Explorer Geschiedenis wordt de geschiedenis voor gematerialiseerde viewsniet weergegeven.
De eigenschap
LOCATION
wordt niet ondersteund bij het definiëren van een table.Unity Catalog-enabled pipelines kunnen niet publiceren naar de Hive-metastore.
Python UDF-ondersteuning bevindt zich in openbare preview.
U kunt Delta Sharing- niet gebruiken met een Gerealiseerde Weergave van Delta Tables Live of streaming table gepubliceerd naar Unity Catalog.
U kunt de
event_log
table waardefunctie 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_log
table waardefunctie met andere gebruikers.
Notitie
De onderliggende bestanden die gematerialiseerde views ondersteunen, kunnen gegevens bevatten uit upstream tables (inclusief mogelijke persoonsgegevens) die niet worden weergegeven in de definitie van de gematerialiseerde weergave. Deze gegevens worden automatisch toegevoegd aan de onderliggende opslag ter ondersteuning van incrementele vernieuwing van gematerialiseerde views.
Omdat de onderliggende bestanden van een gerealiseerde weergave het risico lopen dat gegevens van upstream-tables, die geen deel uitmaken van de gerealiseerde weergave schema, blootgesteld worden, adviseert Databricks 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 gematerialiseerde weergavedefinitie alleen de geaggregeerde COUNT DISTINCT
-component bevat, bevatten de onderliggende bestanden een list van de werkelijke values 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. Een enkele 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 Catalogte 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 Live-Tables-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 Delta Live Tables is geconfigureerd voor het persistent maken van gegevens naar Unity Catalog, wordt de levenscyclus van de table beheerd door de Delta Live Tables-pijplijn. Omdat de pijplijn de table levenscyclus en machtigingen beheert:
- Wanneer een table wordt verwijderd uit de Delta Live-Tables-pijplijndefinitie, wordt de bijbehorende gerealiseerde weergave of streaming-table-item verwijderd uit Unity Catalog tijdens de volgende pijplijn update-run. 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 streaming-table weer toe te voegen aan de pijplijndefinitie.
- Als u de Delta Live-Tables-pijplijn verwijdert, worden alle tables die in die pijplijn zijn gedefinieerd, verwijdert. Vanwege deze wijziging wordt de Delta Live-Tables-gebruikersinterface bijgewerkt om u te vragen om het verwijderen van een pijplijn te bevestigen.
- Interne ondersteuning tables, inclusief de ondersteuningsstructuren voor
APPLY CHANGES INTO
, is niet rechtstreeks toegankelijk voor gebruikers.
Schrijf tables naar Unity-Catalog vanuit een Delta Live-Tables-pijplijn
Notitie
Als u geen catalog en doel-schema voor een pijplijn select, worden tables niet gepubliceerd naar Unity Catalog en kunnen ze alleen worden geopend door query's in dezelfde pijplijn.
Als u uw tables naar Unity Catalogwilt schrijven, moet u uw pijplijn configureren om ermee te werken via uw werkruimte. Wanneer u een pijplijnmaakt, selectUnity Catalog onder Opslagopties, select u een catalog in de vervolgkeuzelijst Catalog en select een bestaande schema of voert u de naam in voor een nieuwe schema in de vervolgkeuzelijst Doel schema. Zie Wat zijn catalogs in Azure Databricks voor meer informatie over Unity Catalogcatalogs?. 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:
- Unity Catalog beheerde en externe tables, en views, gerealiseerde views en streaming tables.
- Hive-metastore tables en views.
- Auto Loader met behulp van de
read_files()
-functie om te lezen van externe locaties in Unity Catalog. - Apache Kafka en Amazon Kinesis.
Hieronder volgen voorbeelden van het lezen uit Unity Catalog en Hive-metastore tables.
Batchverwerking vanuit een Unity Catalogtable
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-Catalogtable
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 de Hive-metastore tables met behulp van de hive_metastore
catalog:
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}")
)
Deel gerealiseerde views
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 bieden om een query uit te voeren op een table met behulp van GRANT verklaringen en u kunt toegang tot query's revoke met behulp van REVOKE verklaringen. Zie Bevoegdheden beheren in Unity Catalogvoor meer informatie over bevoegdheden in Unity Catalog.
Grant select op een table
GRANT SELECT ON TABLE
my_catalog.my_schema.table_name
TO
`user@databricks.com`
Revoke select op een table
REVOKE SELECT ON TABLE
my_catalog.my_schema.table_name
FROM
`user@databricks.com`
Grant table maken of gematerialiseerde weergaveprivileges maken
GRANT CREATE { MATERIALIZED VIEW | TABLE } ON SCHEMA
my_catalog.my_schema
TO
{ principal | user }
Herkomst voor een pijplijn weergeven
Herkomst voor tables in een Delta Live-Tables-pijplijn is zichtbaar in Catalog Explorer. In de Catalog Explorer-herkomstinterface worden de upstream- en downstream-tables weergegeven voor gerealiseerde views of streaming-tables in een Unity-pijplijn met Catalogingeschakeld. Voor meer informatie over de herkomst van Unity Catalog, zie Gegevensherkomst vastleggen en weergeven met Unity Catalog.
Voor een materialized view of streaming-table in een Delta Live Tables-pijplijn met Unity Catalog, zal de Catalog Explorer interface ook worden gekoppeld aan de pijplijn die de materialized view of streaming-table heeft geproduceerd, als de pijplijn toegankelijk is vanuit de huidige werkruimte.
Gegevens toevoegen, wijzigen of verwijderen in een streaming table
U kunt DML-instructies (Data Manipulat Language) gebruiken, waaronder instructies voor insert, update, verwijderen en samenvoegen, om streaming-tables te wijzigen die zijn gepubliceerd naar Unity Catalog. Ondersteuning voor DML-query's tegen streaming-tables maakt gebruiksvoorbeelden mogelijk, zoals het bijwerken van tables voor naleving van de Algemene Verordening Gegevensbescherming (AVG).
Notitie
- DML-instructies die de tableschema van een streaming-table wijzigen, worden niet ondersteund. Zorg ervoor dat uw DML-instructies niet proberen de tableschemate veranderen.
- DML-instructies die update een streaming-table alleen kunnen 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, moet voor uw verwerking streaming worden uitgevoerd vanuit een bronstreaming table met wijzigingen (bijvoorbeeld door DML-instructies), set de vlag skipChangeCommits bij het lezen van de bronstreaming table. Wanneer
skipChangeCommits
is set, worden transacties die records op de bron-table verwijderen of wijzigen genegeerd. Als voor uw verwerking geen streaming-tableis vereist, kunt u een gematerialiseerde weergave (die de beperking van alleen toevoegen niet heeft) gebruiken als doel table.
Hieronder vindt u voorbeelden van DML-instructies om records in een streaming tablete wijzigen.
Records verwijderen met een specifieke id:
DELETE FROM my_streaming_table WHERE id = 123;
Update records met een specifieke ID:
UPDATE my_streaming_table SET name = 'Jane Doe' WHERE id = 123;
Publiceren tables met rijfilters en column maskeringen
Belangrijk
Deze functie is beschikbaar als openbare preview.
rijfilters kunt u een functie opgeven die als filter wordt toegepast wanneer een table scan rijen ophaalt. Deze filters zorgen ervoor dat volgende query's alleen rijen retourneren waarvoor het filterpredicaat waar wordt geëvalueerd.
Column maskers stellen u in staat om het values van een columnte maskeren wanneer een table scan rijen ophaalt. Toekomstige query's voor die column retourneren het resultaat van de geëvalueerde functie in plaats van de oorspronkelijke waarde van de column. Voor meer informatie over het gebruik van rijfilters en column maskers, zie Gevoelige table gegevens filteren met rijfilters en column maskers.
Rijfilters en Column maskers beheren
Rijfilters en column maskers op gerealiseerde views en streaming-tables moeten worden toegevoegd, bijgewerkt of verwijderd via de CREATE OR REFRESH
-instructie.
Zie voor gedetailleerde syntaxis voor het definiëren van tables met rijfilters en column maskers Delta Live Tables SQL-taalreferenties en Delta Live Tables Python-taalreferentie.
Gedrag
Hier zijn belangrijke details bij het gebruik van rijfilters of column-maskers in Delta Live Tables-pijplijnen:
-
Refresh als eigenaar: wanneer een pijplijn update een gerealiseerde weergave of streaming tablevernieuwt, worden rijfilterfuncties en column-maskerfuncties uitgevoerd met de rechten van de eigenaar van de pijplijn. Dit betekent dat de tablerefresh gebruikmaakt van de beveiligingscontext van de gebruiker die de pijplijn heeft gemaakt. Functies die de gebruikerscontext controleren (zoals
CURRENT_USER
enIS_MEMBER
) worden geëvalueerd met behulp van de gebruikerscontext van de pijplijneigenaar. -
Query: wanneer een query wordt uitgevoerd op een gerealiseerde weergave of streaming-table, worden functies die de gebruikerscontext controleren (zoals
CURRENT_USER
enIS_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 views over bron-tables die rijfilters en column maskers bevatten, is de refresh van de gerealiseerde weergave altijd een volledig refresh. Een volledige refresh verwerkt alle gegevens die beschikbaar zijn in de bron met de meest recente definities. Met dit proces wordt gecontroleerd of beveiligingsbeleid op de bron-tables worden geëvalueerd en toegepast met de meest up-to-datumgegevens en -definities.
Waarneembaarheid
Gebruik DESCRIBE EXTENDED
, INFORMATION_SCHEMA
of de Catalog Explorer om de bestaande rijfilters en column maskers te onderzoeken die van toepassing zijn op een bepaalde gerealiseerde weergave of streaming-table. Met deze functionaliteit kunnen gebruikers gegevenstoegang en -beveiligingsmaatregelen controleren en evalueren op gematerialiseerde views's en streaming tables's.