Använda Unity Catalog med dina DLT-pipelines
Viktig
DLT-stöd för Unity Catalog finns i public preview.
Databricks rekommenderar att du konfigurerar DLT-pipelines med Unity Catalog.
Pipelines som konfigurerats med Unity Catalog publicerar alla definierade materialiserade vyer och strömmande tabeller till den angivna katalogen och schemat. Unity Catalog-pipelines kan få tillgång till andra Unity Catalog-tabeller och volymer.
Använd GRANT och REVOKEför att hantera behörigheter för de tabeller som har skapats av en Unity Catalog-pipeline.
Not
I den här artikeln beskrivs funktioner för det aktuella standardpubliceringsläget för pipelines. Pipelines som skapats före den 5 februari 2025 kan använda det äldre publiceringsläget och LIVE
virtuella schemat. Se LIVE-schema (äldre) –.
krav
Om du vill skapa strömmande tabeller och materialiserade vyer i ett målschema i Unity Catalog måste du ha följande behörigheter för schemat och den överordnade katalogen:
-
USE CATALOG
behörigheter i målkatalogen. -
CREATE MATERIALIZED VIEW
ochUSE SCHEMA
behörigheter för målschemat om din pipeline skapar materialiserade vyer. -
CREATE TABLE
ochUSE SCHEMA
behörigheter på målschemat ifall din pipeline skapar strömmande tabeller.
Om din pipeline skapar nya scheman måste du ha USE CATALOG
och CREATE SCHEMA
behörigheter i målkatalogen.
Beräkning som krävs för att köra en Unity Catalog-aktiverad pipeline:
- Standardåtkomstläge (tidigare läge för delad åtkomst). En Unity Catalog-aktiverad pipeline kan inte köras på en dedikerad beräkning (tidigare en enda användarberäkning). Se Standard-åtkomstlägesbegränsningar för Unity Catalog.
Beräkning som krävs för att fråga tabeller som skapas av en DLT-pipeline med Unity Catalog (inklusive strömmande tabeller och materialiserade vyer) innehåller något av följande:
- SQL-lager
- Standardåtkomstlägesberäkning på Databricks Runtime 13.3 LTS eller senare.
- Dedikerad åtkomstlägesberäkning, om detaljerad åtkomstkontroll är aktiverad på den dedikerade beräkningen (det vill: den körs på Databricks Runtime 15.4 eller senare och serverlös beräkning är aktiverad för arbetsytan). Mer information finns i Detaljerad åtkomstkontroll för dedikerad beräkning (tidigare beräkning av en enskild användare).
- Beräkning i dedikerat åtkomstläge från 13.3 LTS till 15.3, förutsatt att tabellägaren kör frågan.
Ytterligare beräkningsbegränsningar gäller. Se avsnittet nedan.
Begränsningar
Följande är begränsningar när du använder Unity Catalog med DLT:
- Som standard kan endast pipelineägaren och arbetsyteadministratörerna visa drivrutinsloggarna från den beräkning som kör en Unity Catalog-aktiverad pipeline. Om du vill tillåta andra användare att komma åt drivrutinsloggarna, se Tillåt användare som inte är administratörer att visa drivrutinsloggarna från en Unity Catalog-aktiverad pipeline.
- Befintliga pipelines som använder Hive-metaarkivet kan inte uppgraderas för att använda Unity Catalog. Om du vill migrera en befintlig pipeline som skriver till Hive-metaarkivet måste du skapa en ny pipeline och mata in data från datakällorna igen. Se Skapa en Unity Catalog-pipeline genom att klona en Hive metastore-pipeline.
- Du kan inte skapa en Unity Catalog-aktiverad pipeline på en arbetsyta som är kopplad till ett metaarkiv som skapades under den offentliga förhandsversionen av Unity Catalog. Se Uppgradera till privilegiernas arv.
- JAR stöds inte. Endast Python-bibliotek från tredje part stöds. Se Hantera Python-beroenden för DLT-pipelines.
- Frågor med datamanipuleringsspråk (DML) som ändrar schemat för en strömmande tabell stöds inte.
- En materialiserad vy som skapats i en DLT-pipeline-process kan inte användas som en strömmande datakälla utanför denna pipeline-process, till exempel i en annan pipeline eller en nedströms-notebook-fil.
- Data för materialiserade vyer och strömmande tabeller lagras på lagringsplatsen för det innehållande schemat. Om en schemalagringsplats inte har angetts lagras tabellerna på katalogens lagringsplats. Om schema- och kataloglagringsplatser inte anges lagras tabellerna på metaarkivets rotlagringsplats.
- Fliken Katalogutforskaren historik visar inte historik för materialiserade vyer.
- Egenskapen
LOCATION
stöds inte när du definierar en tabell. - Unity Catalog-aktiverade pipelines kan inte publicera till Hive-metastore.
- Python UDF-stöd finns i offentlig förhandsversion.
- Du kan inte använda Delta Sharing med en materialiserad DLT-vy eller en strömmande tabell som publicerats till Unity Catalog.
Notis
De underliggande filerna som stöder materialiserade vyer kan innehålla data från överordnade tabeller (inklusive möjlig personligt identifierbar information) som inte visas i den materialiserade vydefinitionen. Dessa data läggs automatiskt till i den underliggande lagringen för att stödja inkrementell uppdatering av materialiserade vyer.
Eftersom de underliggande filerna i en materialiserad vy kan riskera att exponera data från överordnade tabeller som inte ingår i det materialiserade vyschemat rekommenderar Databricks att inte dela den underliggande lagringen med obetrodda nedströmsanvändare.
Anta till exempel att en materialiserad vydefinition innehåller en COUNT(DISTINCT field_a)
-sats. Även om den materialiserade vydefinitionen endast innehåller den aggregerade COUNT DISTINCT
-satsen innehåller de underliggande filerna en lista över de faktiska värdena för field_a
.
Kan jag använda Hive-metaarkiv och Unity Catalog-pipelines tillsammans?
Din arbetsyta kan innehålla pipelines som använder Unity Catalog och det äldre Hive-metaarkivet. En enskild pipeline kan dock inte skriva till Hive-metastore och Unity Catalog. Befintliga pipelines som skriver till Hive-metastore kan inte uppgraderas för att använda Unity Catalog. Om du vill migrera en befintlig pipeline som skriver till Hive-metaarkivet måste du skapa en ny pipeline och mata in data från datakällorna igen. Se Skapa en pipeline för Unity Catalog genom att klona en Hive-metastore-pipeline.
Befintliga pipelines som inte använder Unity Catalog påverkas inte genom att skapa nya pipelines som konfigurerats med Unity Catalog. Dessa pipelines fortsätter att lagra data i Hive-metadatakatalogen med hjälp av den konfigurerade lagringsplatsen.
Om inget annat anges i det här dokumentet stöds alla befintliga datakällor och DLT-funktioner med pipelines som använder Unity Catalog. Både Python-- och SQL--gränssnitt stöds med pipelines som använder Unity Catalog.
Ändringar i befintliga funktioner
När DLT har konfigurerats för att bevara data till Unity Catalog hanterar DLT-pipelinen tabellens livscykel och behörigheter. Som ett resultat:
- När en tabell tas bort från pipelinedefinitionen kommer nästa pipelineuppdatering att markera motsvarande materialiserade vy eller post i strömmande tabell som inaktiv. Inaktiva tabeller kan fortfarande frågas men uppdateras inte. Om du vill rensa materialiserade vyer eller strömmande tabeller kan du uttryckligen
DROP
tabellen.- Du kan återställa alla borttagna tabeller inom 7 dagar med hjälp av kommandot
UNDROP
. - Om du vill behålla det äldre beteendet där den materialiserade vyn eller strömningstabellposten tas bort från Unity Catalog vid nästa pipelineuppdatering anger du pipelinekonfigurationen
"pipelines.dropInactiveTables": "true"
. Faktiska data behålls under en period så att de kan återställas om de tas bort av misstag. Data kan återställas inom 7 dagar genom att lägga till den materialiserade vyn eller strömningstabellen i pipelinedefinitionen igen.
- Du kan återställa alla borttagna tabeller inom 7 dagar med hjälp av kommandot
- Om du tar bort DLT-pipelinen tas alla tabeller som definierats i pipelinen bort. På grund av den här ändringen uppdateras DLT-användargränssnittet så att du uppmanas att bekräfta borttagningen av en pipeline.
- Interna bakgrundstabeller, inklusive de som används för att stödja
APPLY CHANGES INTO
, är inte direkt tillgängliga för användare.
Skriva tabeller till Unity Catalog från en DLT-pipeline
Om du vill skriva tabellerna till Unity Catalog måste du konfigurera pipelinen så att den fungerar med den via arbetsytan. När du skapa en pipelineväljer du Unity Catalog under Lagringsalternativ, väljer en katalog i listrutan Catalog och väljer ett befintligt schema eller anger namnet på ett nytt schema i listrutan Mål schema. Mer information om Unity Catalog-kataloger finns i Vad är kataloger i Azure Databricks?. Mer information om scheman i Unity Catalog finns i Vad är scheman i Azure Databricks?.
importera data i en Unity Catalog pipeline
Din pipeline som har konfigurerats för att använda Unity Catalog kan läsa data från:
- Hantera och externa tabeller, vyer, materialiserade vyer och strömmande tabeller i Unity Catalog.
- Hive-metaarkivtabeller och -vyer.
- Automatisk inläsning med hjälp av funktionen
read_files()
för att läsa från externa platser i Unity Catalog. - Apache Kafka och Amazon Kinesis.
Följande är exempel på läsning från Unity Catalog- och Hive-metaarkivtabeller.
Batchinmatning från en Unity-katalogtabell
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")
Strömma ändringar från en Unity Catalog-tabell
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")
Mata in data från Hive-metaarkiv
En pipeline som använder Unity Catalog kan läsa data från Hive-metaarkivtabeller med hjälp av hive_metastore
-katalogen:
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")
Mata in data från Auto Loader
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}")
)
Dela materialiserade vyer
Som standard har endast pipelineägaren behörighet att köra frågor mot datauppsättningar som skapats av pipelinen. Du kan ge andra användare möjlighet att köra frågor mot en tabell med hjälp av GRANT-instruktioner och du kan återkalla frågeåtkomst med hjälp av REVOKE-instruktioner. Mer information om behörigheter i Unity Catalog finns i Hantera privilegier i Unity Catalog.
Bevilja val i en tabell
GRANT SELECT ON TABLE
my_catalog.my_schema.table_name
TO
`user@databricks.com`
Återkalla val i en tabell
REVOKE SELECT ON TABLE
my_catalog.my_schema.table_name
FROM
`user@databricks.com`
Bevilja behörighet för att skapa tabell eller materialiserad vy
GRANT CREATE { MATERIALIZED VIEW | TABLE } ON SCHEMA
my_catalog.my_schema
TO
{ principal | user }
Visa härledning för en pipeline
Ursprung för tabeller i en DLT-pipeline är synligt i Katalogutforskaren. Katalogutforskarens härkomstgränssnitt visar ursprungs- och efterföljandetabellerna för materialiserade vyer eller strömmande tabeller i en pipeline med Unity Catalog. Mer information om Unity Catalog-ursprung finns i Avbilda och visa data härstamning med hjälp av Unity Catalog.
För en materialiserad vy eller strömningstabell i en Unity Catalog-aktiverad DLT-pipeline länkar katalogutforskarens ursprungsgränssnitt också till pipelinen som producerade den materialiserade vyn eller strömningstabellen om pipelinen är tillgänglig från den aktuella arbetsytan.
Lägga till, ändra eller ta bort data i en strömmande tabell
Du kan använda instruktioner för datamanipuleringsspråk (DML), inklusive infognings-, uppdaterings-, borttagnings- och sammanslagningsinstruktioner, för att ändra strömmande tabeller som publicerats till Unity Catalog. Stöd för DML-frågor mot strömningstabeller möjliggör användningsfall, till exempel uppdatering av tabeller för kompatibilitet med GDPR (General Data Protection Regulation).
Note
- DML-instruktioner som ändrar tabellschemat för en strömmande tabell stöds inte. Se till att DML-uttrycken inte försöker utveckla tabellschemat.
- DML-instruktioner som uppdaterar en strömmande tabell kan endast köras i ett delat Unity Catalog-kluster eller ett SQL-lager med Databricks Runtime 13.3 LTS och senare.
- Eftersom strömning kräver källor där data endast läggs till, ange flaggan hoppa över flaggan för ändringsåtaganden när du läser från en källströmningstabell om bearbetningen kräver strömning från en källströmningstabell med förändringar (till exempel vid DML-uttalanden). När
skipChangeCommits
anges ignoreras transaktioner som tar bort eller ändrar poster i källtabellen. Om din bearbetning inte kräver en strömmande tabell kan du använda en materialiserad vy (som inte har append-only-begränsningen) som måltabell.
Följande är exempel på DML-instruktioner för att ändra poster i en strömningstabell.
Ta bort poster med ett specifikt ID:
DELETE FROM my_streaming_table WHERE id = 123;
Uppdatera poster med ett specifikt ID:
UPDATE my_streaming_table SET name = 'Jane Doe' WHERE id = 123;
Publicera tabeller med radfilter och kolumnmasker
Viktig
Den här funktionen finns i offentlig förhandsversion.
Radfilter kan du ange en funktion som används som ett filter när en tabellgenomsökning hämtar rader. Dessa filter säkerställer att efterföljande frågor endast returnerar rader som filterpredikatet utvärderas till sant för.
Kolumnmasker gör att du kan maskera en kolumns värden när en tabellgenomsökning hämtar rader. Framtida frågor för kolumnen returnerar den utvärderade funktionens resultat i stället för kolumnens ursprungliga värde. Mer information om hur du använder radfilter och kolumnmasker finns i Filtrera känsliga tabelldata med hjälp av radfilter och kolumnmasker.
Hantera radfilter och kolumnmasker
Radfilter och kolumnmasker på materialiserade vyer och strömmande tabeller bör läggas till, uppdateras eller tas bort via CREATE OR REFRESH
-instruktionen.
Detaljerad syntax för att definiera tabeller med radfilter och kolumnmasker finns i referens för DLT SQL-språk- och DLT Python-språkreferens.
Uppförande
Följande är viktig information när du använder radfilter eller kolumnmasker i DLT-pipelines:
-
Uppdatera som ägare: När en pipelineuppdatering uppdaterar en materialiserad vy eller en strömmande tabell körs radfilter- och kolumnmaskfunktionerna med pipelineägarens rättigheter. Det innebär att tabelluppdateringen använder säkerhetskontexten för den användare som skapade pipelinen. Funktioner som kontrollerar användarkontexten (till exempel
CURRENT_USER
ochIS_MEMBER
) utvärderas med hjälp av pipelineägarens användarkontext. -
Query: När du kör frågor mot en materialiserad vy eller en strömmande tabell utvärderas funktioner som kontrollerar användarkontexten (till exempel
CURRENT_USER
ochIS_MEMBER
) med hjälp av anroparens användarkontext. Den här metoden tillämpar användarspecifika datasäkerhets- och åtkomstkontroller baserat på den aktuella användarens kontext. - När du skapar materialiserade vyer över källtabeller som innehåller radfilter och kolumnmasker är uppdateringen av den materialiserade vyn alltid en fullständig uppdatering. En fullständig uppdatering ombearbetar alla data som är tillgängliga i källan med de senaste definitionerna. Den här processen kontrollerar att säkerhetsprinciperna i källtabellerna utvärderas och tillämpas med de mest up-todatumdata och definitioner.
Observerbarhet
Använd DESCRIBE EXTENDED
, INFORMATION_SCHEMA
eller Katalogutforskaren för att undersöka befintliga radfilter och kolumnmasker som gäller för en viss materialiserad vy eller strömningstabell. Med den här funktionen kan användarna granska och utvärdera dataåtkomst och skyddsåtgärder för materialiserade vyer och strömmande tabeller.