Dela via


Använd Unity Catalog med dina Delta Live Tables-pipelines

Viktigt!

Delta Live Tables-stöd för Unity Catalog finns i allmänt tillgänglig förhandsversion.

Databricks rekommenderar att du konfigurerar Delta Live Tables-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 läsa från andra Unity Catalog-tabeller och volymer.

Om du vill hantera behörigheter för tabellerna som skapats av en Unity Catalog-pipeline använder du GRANT och REVOKE.

Krav

Behörigheter som krävs för att skapa tabeller i Unity Catalog från en Delta Live Tables-pipeline:

  • USE CATALOG behörigheter i målkatalogen.
  • CREATE MATERIALIZED VIEW och USE SCHEMA behörigheter i målschemat om din pipeline skapar materialiserade vyer.
  • CREATE TABLE och USE SCHEMA behörigheter i målschemat om din pipeline skapar strömmande tabeller.
  • Om ett målschema inte anges i pipelineinställningarna måste du ha CREATE MATERIALIZED VIEW eller CREATE TABLE behörigheter för minst ett schema i målkatalogen.

Beräkning som krävs för att köra en Unity Catalog-aktiverad pipeline:

Beräkning som krävs för att fråga tabeller som skapas av en Delta Live Tables-pipeline med Unity Catalog (inklusive strömmande tabeller och materialiserade vyer) innehåller något av följande:

  • SQL-lager

  • Kluster för delat åtkomstläge på Databricks Runtime 13.3 LTS eller senare.

  • Åtkomstlägeskluster för enskild användare (eller "tilldelad") om detaljerad åtkomstkontroll är aktiverad i klustret för en enskild användare (dvs. klustret 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 beräkning av enskilda användare.

  • Åtkomstlägeskluster för enskild användare (eller "tilldelad") på 13.3 LTS till 15.3, endast om 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 Delta Live Tables:

  • Som standard kan endast pipelineägaren och arbetsyteadministratörerna visa drivrutinsloggarna från klustret som kör en Unity Catalog-aktiverad pipeline. Om du vill tillåta andra användare att komma åt drivrutinsloggarna läser du 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.

  • 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 arv av privilegier.

  • JAR stöds inte. Endast Python-bibliotek från tredje part stöds. Se Hantera Python-beroenden för Delta Live Tables-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 Delta Live Tables-pipeline kan inte användas som en strömmande källa utanför pipelinen, till exempel i en annan pipeline eller en nedströms notebook-fil.

  • Om en pipeline publiceras till ett schema med en hanterad lagringsplats kan schemat ändras i en efterföljande uppdatering, men bara om det uppdaterade schemat använder samma lagringsplats som det tidigare angivna schemat.

  • Tabeller lagras på lagringsplatsen för målschemat. Om en schemalagringsplats inte har angetts lagras tabellerna på katalogens lagringsplats. Om schema- och kataloglagringsplatser inte anges lagras tabellerna på metaarkivets rotlagringsplats.

  • Fliken Historik för katalogutforskaren 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-metaarkivet.

  • Python UDF-stöd finns i offentlig förhandsversion.

  • Du kan inte använda Deltadelning med en materialiserad vy eller en strömmande tabell i Delta Live Tables som publicerats till Unity Catalog.

  • Du kan inte använda event_log funktionen tabellvärde i en pipeline eller fråga för att komma åt händelseloggarna för flera pipelines.

  • Du kan inte dela en vy som skapats event_log över funktionen tabellvärde med andra användare.

  • Kluster med en nod stöds inte med Unity Catalog-aktiverade pipelines. Eftersom Delta Live Tables kan skapa ett kluster med en nod för att köra mindre pipelines kan pipelinen misslyckas med ett felmeddelande som refererar single-node modetill . Om detta inträffar anger du minst en arbetare när du konfigurerar beräkning. Se Konfigurera beräkning för en Delta Live Tables-pipeline.

Kommentar

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 aggregeringssatsen COUNT DISTINCT innehåller de underliggande filerna en lista över de faktiska värdena field_aför .

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 enda pipeline kan dock inte skriva till Hive-metaarkivet och Unity Catalog. Befintliga pipelines som skriver till Hive-metaarkivet kan inte uppgraderas för att använda Unity Catalog.

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 spara data till Hive-metaarkivet med hjälp av den konfigurerade lagringsplatsen.

Om inget annat anges i det här dokumentet stöds alla befintliga datakällor och Delta Live Tables-funktioner med pipelines som använder Unity Catalog. Både Python- och SQL-gränssnitten stöds med pipelines som använder Unity Catalog.

Ändringar i befintliga funktioner

När Delta Live Tables har konfigurerats för att bevara data till Unity Catalog hanteras tabellens livscykel av Delta Live Tables-pipelinen. Eftersom pipelinen hanterar tabellens livscykel och behörigheter:

  • När en tabell tas bort från pipelinedefinitionen Delta Live Tables tas motsvarande materialiserade vy- eller direktuppspelningstabellpost bort från Unity Catalog vid nästa pipelineuppdatering. Faktiska data behålls under en period så att de kan återställas om de tas bort av misstag. Data kan återställas genom att lägga till den materialiserade vyn eller >st tillbaka i pipelinedefinitionen.
  • Om du tar bort Delta Live Tables-pipelinen tas alla tabeller som definierats i pipelinen bort. På grund av den här ändringen uppdateras användargränssnittet för Delta Live Tables 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 Delta Live Tables-pipeline

Kommentar

Om du inte väljer en katalog och ett målschema för en pipeline publiceras tabeller inte till Unity Catalog och kan endast nås av frågor i samma 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 skapar en pipeline väljer du Unity Catalog under Lagringsalternativ, väljer en katalog i listrutan Katalog och väljer ett befintligt schema eller anger namnet på ett nytt schema i listrutan Målschema. 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?.

Mata in data i en Unity Catalog-pipeline

Din pipeline som har konfigurerats för att använda Unity Catalog kan läsa data från:

  • Hanterade och externa unity-katalogtabeller, vyer, materialiserade vyer och strömmande tabeller.
  • Hive-metaarkivtabeller och -vyer.
  • Automatisk inläsning med hjälp av read_files() funktionen 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 Catalog-tabell

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 automatisk inläsning

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 skapa tabell eller skapa materialiserade vybehörigheter

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

Visa ursprung för en pipeline

Ursprung för tabeller i en Delta Live Tables-pipeline visas i Katalogutforskaren. Katalogutforskarens ursprungsgränssnitt visar uppströms- och nedströmstabellerna för materialiserade vyer eller strömmande tabeller i en Unity Catalog-aktiverad pipeline. Mer information om Unity Catalog-ursprung finns i Avbilda och visa data härstamning med Unity Catalog.

För en materialiserad vy eller strömningstabell i en Unity Catalog-aktiverad Delta Live Tables-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 DML-instruktioner (datamanipuleringsspråk ), 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).

Kommentar

  • 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 direktuppspelning kräver tilläggsdatakällor anger du flaggan skipChangeCommits när du läser källströmningstabellen om bearbetningen kräver strömning från en källströmningstabell med ändringar (till exempel av DML-instruktioner). När skipChangeCommits har angetts ignoreras transaktioner som tar bort eller ändrar poster i källtabellen. Om bearbetningen inte kräver en direktuppspelningstabell kan du använda en materialiserad vy (som inte har begränsningen endast för tillägg) 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

Viktigt!

Den här funktionen finns som allmänt tillgänglig förhandsversion.

Med radfilter kan du ange en funktion som tillämpas 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.

Med kolumnmasker kan du 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 -instruktionen CREATE OR REFRESH .

Detaljerad syntax för att definiera tabeller med radfilter och kolumnmasker finns i Sql-språkreferens för Delta Live Tables och Python-språkreferens för Delta Live Tables.

Funktionssätt

Följande är viktig information när du använder radfilter eller kolumnmasker i Delta Live Tables-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 och IS_MEMBER) utvärderas med hjälp av pipelineägarens användarkontext.
  • Fråga: När du frågar en materialiserad vy eller en strömmande tabell utvärderas funktioner som kontrollerar användarkontexten (till exempel CURRENT_USER och IS_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 aktuella data och definitioner.

Överskådlighet

Använd DESCRIBE EXTENDED, INFORMATION_SCHEMAeller 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ändare granska och granska dataåtkomst och skyddsåtgärder för materialiserade vyer och strömningstabeller.