Používání katalogu Unity s kanály Delta Live Tables

Důležité

Podpora katalogu Unity pro Delta Live Tables je ve verzi Public Preview.

Kromě stávající podpory pro zachování tabulek do metastoru Hive můžete použít Katalog Unity s kanály Delta Live Tables k:

  • Definujte katalog v katalogu Unity, kde bude kanál uchovávat tabulky.
  • Čtení dat z tabulek katalogu Unity

Váš pracovní prostor může obsahovat kanály, které používají katalog Unity nebo metastore Hive. Jeden kanál ale nemůže zapisovat do metastoru Hive i do katalogu Unity ani do existujících kanálů, aby používal katalog Unity. Na vaše stávající kanály, které nepoužívají katalog Unity, tato verze Preview nemá vliv a budou nadále uchovávat data do metastoru Hive pomocí nakonfigurovaného umístění úložiště.

Pokud v tomto dokumentu neurčíte jinak, podporují se kanály, které používají katalog Unity, všechny existující zdroje dat a funkce Delta Live Tables. Kanály , které používají katalog Unity, podporují rozhraní Pythonu i SQL .

Na tabulky vytvořené ve vašem kanálu se také dají dotazovat ze sdílených clusterů katalogu Unity pomocí Databricks Runtime 13.3 LTS a vyšší nebo z SQL Warehouse. Tabulky nelze dotazovat z přiřazených nebo žádných clusterů izolace.

Ke správě oprávnění u tabulek vytvořených kanálem katalogu Unity použijte grant a REVOKE.

Požadavky

K vytvoření tabulek v katalogu Unity z kanálu Delta Live Tables jsou potřeba následující:

  • Musíte mít USE CATALOG oprávnění k cílovému katalogu.
  • Pokud kanál vytváří materializovaná zobrazení, musíte mít CREATE MATERIALIZED VIEW v cílovém schématu oprávnění USE SCHEMA a oprávnění.
  • Pokud kanál vytváří streamované tabulky, musíte mít CREATE TABLE v cílovém schématu oprávnění USE SCHEMA a oprávnění.
  • Pokud v nastavení kanálu není zadané cílové schéma, musíte mít CREATE MATERIALIZED VIEW oprávnění CREATE TABLE alespoň k jednomu schématu v cílovém katalogu.

Omezení

Při používání katalogu Unity s rozdílovými živými tabulkami platí následující omezení:

  • Ve výchozím nastavení mají oprávnění pouze vlastník kanálu a správci pracovního prostoru zobrazit protokoly ovladačů z clusteru, na kterém běží kanál s podporou katalogu Unity. Pokud chcete povolit přístup ostatním uživatelům, aby mohli zobrazit protokoly ovladačů, přečtěte si téma Povolit uživatelům bez oprávnění správce zobrazit protokoly ovladačů z kanálu s podporou katalogu Unity.

  • Existující kanály, které používají metastore Hive, nelze upgradovat tak, aby používaly katalog Unity. Pokud chcete migrovat existující kanál, který zapisuje do metastoru Hive, musíte vytvořit nový kanál a znovu ingestovat data ze zdrojů dat.

  • Kanál s podporou katalogu Unity nelze vytvořit v pracovním prostoru připojeném k metastoru vytvořenému během veřejné verze Preview katalogu Unity. Viz Upgrade na dědičnost oprávnění.

  • Knihovny třetích stran a žádosti o přijetí změn se nepodporují.

  • Dotazy jazyka DML (Data Manipulat Language), které upravují schéma streamované tabulky, se nepodporují.

  • Materializované zobrazení vytvořené v kanálu Delta Live Tables nelze použít jako zdroj streamování mimo tento kanál, například v jiném kanálu nebo v podřízeného poznámkovém bloku.

  • Publikování do schémat, která určují umístění spravovaného úložiště, se podporuje jenom v kanálu Preview.

  • Pokud kanál publikuje schéma se spravovaným umístěním úložiště, je možné schéma změnit v následné aktualizaci, ale pouze v případě, že aktualizované schéma používá stejné umístění úložiště jako dříve zadané schéma.

  • Pokud cílové schéma určuje umístění úložiště, uloží se tam všechny tabulky. Pokud není zadané umístění úložiště schématu, tabulky se ukládají do umístění úložiště katalogu, pokud ho cílový katalog určuje. Pokud nejsou zadána umístění úložiště schématu a katalogu, tabulky jsou uloženy v kořenovém úložišti metastoru, kde jsou tabulky publikovány.

  • Karta Historie v Průzkumníku katalogu nezobrazuje historii streamovaných tabulek a materializovaných zobrazení.

  • Vlastnost LOCATION není podporována při definování tabulky.

  • Kanály s podporou katalogu Unity nelze publikovat do metastoru Hive.

  • Podpora uživatelem definovaného uživatelem Pythonu je ve verzi Public Preview. Pokud chcete používat uživatelem definované funkce Pythonu , musí váš kanál používat kanál Preview.

  • Rozdílové sdílení s materializovaným zobrazením Delta Live Tables nebo streamovanou tabulkou publikovanou v katalogu Unity nelze použít.

  • Pro přístup k protokolům událostí více kanálů nemůžete použít event_logfunkci s hodnotou tabulky v kanálu nebo dotazu.

  • Nelze sdílet zobrazení vytvořené prostřednictvím event_logfunkce s hodnotami tabulky s jinými uživateli.

  • Kanály s podporou katalogu Unity nepodporují clustery s jedním uzlem. Vzhledem k tomu, že dynamické tabulky Delta můžou vytvořit cluster s jedním uzlem pro spouštění menších kanálů, může váš kanál selhat s chybovou zprávou odkazující single-node modena . Pokud k tomu dojde, ujistěte se, že při konfiguraci nastavení výpočetních prostředků zadáte alespoň jeden pracovní proces.

  • Tabulky vytvořené v kanálu s podporou katalogu Unity nelze dotazovat z přiřazených nebo žádných clusterů izolace. Pokud chcete dotazovat tabulky vytvořené kanálem Delta Live Tables, musíte použít cluster režimu sdíleného přístupu pomocí databricks Runtime 13.3 LTS a vyšší nebo SQL Warehouse.

  • Delta Live Tables používá cluster režimu sdíleného přístupu ke spuštění kanálu s podporou katalogu Unity. Kanál s podporou katalogu Unity nejde spustit v přiřazeného clusteru. Informace o omezeních režimu sdíleného přístupu v katalogu Unity najdete v tématu Omezení režimu sdíleného přístupu v katalogu Unity.

  • Filtry řádků nebo masky sloupců nelze použít s materializovanými zobrazeními nebo streamovanými tabulkami publikovanými v katalogu Unity.

Poznámka:

Podkladové soubory podporující materializovaná zobrazení mohou zahrnovat data z nadřazených tabulek (včetně možných identifikovatelných osobních údajů), které se nezobrazují v definici materializovaného zobrazení. Tato data se automaticky přidají do podkladového úložiště, aby podporovala přírůstkovou aktualizaci materializovaných zobrazení.

Vzhledem k tomu, že podkladové soubory materializovaného zobrazení můžou riskovat zveřejnění dat z nadřazených tabulek, které nejsou součástí schématu materializovaného zobrazení, databricks doporučuje nesdílit podkladové úložiště s nedůvěryhodnými podřízenými příjemci.

Předpokládejme například, že definice materializovaného zobrazení obsahuje COUNT(DISTINCT field_a) klauzuli. I když materializovaná definice zobrazení obsahuje pouze agregační COUNT DISTINCT klauzuli, podkladové soubory budou obsahovat seznam skutečných hodnot field_a.

Změny stávajících funkcí

Pokud je delta živé tabulky nakonfigurované tak, aby uchovávaly data do katalogu Unity, životní cyklus tabulky se spravuje kanálem Delta Live Tables. Protože kanál spravuje životní cyklus a oprávnění tabulky:

  • Když je tabulka odebrána z definice kanálu Delta Live Tables, odpovídající materializované zobrazení nebo položka streamované tabulky se odebere z katalogu Unity při příští aktualizaci kanálu. Skutečná data se uchovávají po určitou dobu, aby je bylo možné obnovit, pokud byla odstraněna omylem. Data je možné obnovit přidáním materializovaného zobrazení nebo streamováním tabulky zpět do definice kanálu.
  • Odstranění kanálu Delta Live Tables způsobí odstranění všech tabulek definovaných v daném kanálu. Z důvodu této změny se uživatelské rozhraní delta živých tabulek aktualizuje a zobrazí výzvu k potvrzení odstranění kanálu.
  • Interní zálohovací tabulky, včetně záložních tabulek používaných k podpoře APPLY CHANGES INTO, nejsou přímo přístupné uživatelům.

Zápis tabulek do katalogu Unity z kanálu Delta Live Tables

Poznámka:

Pokud pro kanál nevyberete katalog a cílové schéma, tabulky se nepublikují do katalogu Unity a mají k nim přístup jenom dotazy ve stejném kanálu.

Pokud chcete napsat tabulky do katalogu Unity, vyberte při vytváření kanálu katalog Unity v části Možnosti úložiště, v rozevírací nabídce Katalog vyberte katalog a vyberte existující schéma nebo zadejte název nového schématu v rozevírací nabídce Cílové schéma. Další informace o katalogech Unity najdete v tématu Katalogy. Další informace o schématech v katalogu Unity najdete v tématu Schémata.

Příjem dat do kanálu katalogu Unity

Váš kanál nakonfigurovaný pro použití katalogu Unity může číst data z:

  • Spravované a externí tabulky, zobrazení, materializovaná zobrazení a tabulky streamování v Katalogu Unity
  • Tabulky a zobrazení metastoru Hive
  • Automatický zavaděč cloud_files() pomocí funkce ke čtení z externích umístění katalogu Unity.
  • Apache Kafka a Amazon Kinesis.

Tady jsou příklady čtení z tabulek katalogu Unity a metastoru Hive.

Dávkové příjem dat z tabulky katalogu Unity

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")

Streamování změn z tabulky katalogu Unity

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")

Příjem dat z metastoru Hive

Kanál, který používá Katalog Unity, může číst data z tabulek metastoru hive_metastore Hive pomocí katalogu:

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")

Příjem dat z automatického zavaděče

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}")
 )

Sdílení materializovaných zobrazení (živé tabulky)

Ve výchozím nastavení mohou být tabulky vytvořené kanálem dotazovány pouze vlastníkem kanálu. Jiným uživatelům můžete udělit možnost dotazovat se na tabulku pomocí příkazů GRANT a přístup k dotazům můžete odvolat pomocí příkazů REVOKE . Další informace o oprávněních v katalogu Unity najdete v tématu Správa oprávnění v katalogu Unity.

Udělení výběru v tabulce

GRANT SELECT ON TABLE
  my_catalog.my_schema.live_table
TO
  `user@databricks.com`

Odvolání výběru v tabulce

REVOKE SELECT ON TABLE
  my_catalog.my_schema.live_table
FROM
  `user@databricks.com`

Udělení oprávnění k vytvoření tabulky nebo vytvoření materializovaných oprávnění zobrazení

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

Zobrazení rodokmenu kanálu

Rodokmen tabulek v kanálu Delta Live Tables je viditelný v Průzkumníku katalogu. V případě materializovaných zobrazení nebo streamovaných tabulek v kanálu s podporou katalogu Unity se v uživatelském rozhraní rodokmenu Průzkumníka katalogu zobrazí nadřazené a podřízené tabulky. Další informace o rodokmenu katalogu Unity najdete v tématu Zachycení a zobrazení rodokmenu dat pomocí katalogu Unity.

V případě materializovaného zobrazení nebo streamované tabulky v kanálu Delta Live Tables s podporou katalogu Unity bude uživatelské rozhraní rodokmenu Průzkumníka katalogu také propojit s kanálem, který vytvořil materializované zobrazení nebo tabulku streamování, pokud je kanál přístupný z aktuálního pracovního prostoru.

Přidání, změna nebo odstranění dat v streamované tabulce

K úpravě streamovaných tabulek publikovaných v katalogu Unity můžete použít příkazy jazyka DML (Data Manipulat Language ), včetně vložení, aktualizace, odstranění a slučování. Podpora dotazů DML na streamované tabulky umožňuje případy použití, jako je aktualizace tabulek pro dodržování obecného nařízení o ochraně osobních údajů (GDPR).

Poznámka:

  • Příkazy DML, které upravují schéma tabulky streamované tabulky, nejsou podporovány. Ujistěte se, že se příkazy DML nepokoušnou vyvíjet schéma tabulky.
  • Příkazy DML, které aktualizují streamovací tabulku, je možné spustit pouze ve sdíleném clusteru Katalogu Unity nebo SQL Warehouse pomocí databricks Runtime 13.3 LTS a vyšší.
  • Vzhledem k tomu, že streamování vyžaduje zdroje dat jen pro připojení, pokud vaše zpracování vyžaduje streamování ze zdrojové tabulky streamování se změnami (například příkazy DML), nastavte příznak skipChangeCommits při čtení zdrojové tabulky streamování. Při skipChangeCommits nastavení se transakce, které odstraňují nebo upravují záznamy ve zdrojové tabulce, ignorují. Pokud zpracování nevyžaduje tabulku streamování, můžete jako cílovou tabulku použít materializované zobrazení (které nemá omezení pouze pro připojení).

Tady jsou příklady příkazů DML pro úpravu záznamů v tabulce streamování.

Odstraňte záznamy s konkrétním ID:

DELETE FROM my_streaming_table WHERE id = 123;

Aktualizujte záznamy s konkrétním ID:

UPDATE my_streaming_table SET name = 'Jane Doe' WHERE id = 123;