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.

Förutom det befintliga stödet för att bevara tabeller till Hive-metaarkivet kan du använda Unity Catalog med dina Delta Live Tables-pipelines för att:

  • Definiera en katalog i Unity-katalogen där pipelinen bevarar tabeller.
  • Läsa data från Unity Catalog-tabeller.

Din arbetsyta kan innehålla pipelines som använder Unity Catalog eller Hive-metaarkivet. En enda pipeline kan dock inte skriva till både Hive-metaarkivet och Unity Catalog och befintliga pipelines kan inte uppgraderas för att använda Unity Catalog. Dina befintliga pipelines som inte använder Unity Catalog påverkas inte av den här förhandsversionen och fortsätter att spara data i Hive-metaarkivet med 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.

Tabellerna som skapas i pipelinen kan också frågas från delade Unity Catalog-kluster med Databricks Runtime 13.3 LTS och senare eller ett SQL-lager. Tabeller kan inte frågas från tilldelade eller inga isoleringskluster.

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

Krav

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

  • Du måste ha USE CATALOG behörigheter i målkatalogen.
  • Du måste ha CREATE MATERIALIZED VIEW och USE SCHEMA behörigheter i målschemat om din pipeline skapar materialiserade vyer.
  • Du måste ha 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.

Begränsningar

Följande är begränsningar när du använder Unity Catalog med Delta Live Tables:

  • Som standard har endast pipelineägaren och arbetsyteadministratörerna behörighet att visa drivrutinsloggarna från klustret som kör en Unity Catalog-aktiverad pipeline. Information om hur du aktiverar åtkomst för andra användare att visa drivrutinsloggarna finns i 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.

  • Bibliotek från tredje part och JAR stöds inte.

  • 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 i en nedströms notebook-fil.

  • Publicering till scheman som anger en hanterad lagringsplats stöds endast i förhandsgranskningskanalen.

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

  • Om målschemat anger en lagringsplats lagras alla tabeller där. Om en schemalagringsplats inte har angetts lagras tabellerna på kataloglagringsplatsen om målkatalogen anger en. Om schema- och kataloglagringsplatser inte anges lagras tabellerna på rotlagringsplatsen för metaarkivet där tabellerna publiceras.

  • Fliken Historik i Katalogutforskaren visar inte historik för strömmande tabeller och 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. Om du vill använda Python-UDF:er måste din pipeline använda förhandsgranskningskanalen.

  • 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_logfunktionen 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 kontrollerar du att du anger minst en arbetare när du konfigurerar dina beräkningsinställningar.

  • Tabeller som skapats i en Unity Catalog-aktiverad pipeline kan inte frågas från tilldelade eller inga isoleringskluster. Om du vill fråga efter tabeller som skapats av en Delta Live Tables-pipeline måste du använda ett kluster för delat åtkomstläge med Databricks Runtime 13.3 LTS och senare eller ett SQL-lager.

  • Delta Live Tables använder ett kluster för delat åtkomstläge för att köra en Unity Catalog-aktiverad pipeline. En Unity Catalog-aktiverad pipeline kan inte köras på ett tilldelat kluster. Mer information om begränsningar i läget för delad åtkomst med Unity Catalog finns i Begränsningar för läget delad åtkomst i Unity Catalog.

  • Du kan inte använda radfilter eller kolumnmasker med materialiserade vyer eller strömmande tabeller som publicerats till Unity Catalog.

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 definitionen av en materialiserad vy 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 .

Ä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 bevaras under en tidsperiod så att de kan återställas om de togs bort av misstag. Data kan återställas genom att lägga till den materialiserade vyn eller strömmande tabellen i pipelinedefinitionen igen.
  • 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 för att uppmana dig att bekräfta borttagningen av en pipeline.
  • Interna bakgrundstabeller, inklusive stödtabeller som används för att stödja APPLY CHANGES INTO, är inte direkt åtkomliga för användarna.

Skriva tabeller till Unity Catalog från en Delta Live Tables-pipeline

Om du vill skriva tabellerna till Unity Catalog väljer du Unity Catalog under Lagringsalternativ när du skapar en pipeline, väljer en katalog i listrutan Katalog och väljer ett databasnamn i listrutan Målschema. Mer information om Unity Catalog-kataloger finns i Kataloger. Mer information om scheman i Unity Catalog finns i Scheman.

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 cloud_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 LIVE TABLE
  table_name
AS SELECT
  *
FROM
  my_catalog.my_schema.table1;

Python

@dlt.table
def table_name():
  return spark.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 LIVE TABLE
  table_name
AS SELECT
  *
FROM
  hive_metastore.some_schema.table;

Python

@dlt.table
def table3():
  return spark.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
  cloud_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 (livetabeller)

Som standard kan tabeller som skapats av en pipeline endast frågas av pipelineägaren. 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.live_table
TO
  `user@databricks.com`

Återkalla val i en tabell

REVOKE SELECT ON TABLE
  my_catalog.my_schema.live_table
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. För materialiserade vyer eller strömmande tabeller i en Unity Catalog-aktiverad pipeline visar katalogutforskarens ursprungsgränssnitt uppströms- och nedströmstabeller. 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 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 GDPR-efterlevnad (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;