Sdílet prostřednictvím


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.

Databricks doporučuje konfigurovat kanály Delta Live Tables pomocí katalogu Unity.

Kanály nakonfigurované pomocí katalogu Unity publikují všechna definovaná materializovaná zobrazení a streamované tabulky do zadaného katalogu a schématu. Kanály katalogu Unity můžou číst z jiných tabulek a svazků katalogu Unity.

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

Požadavky

Oprávnění potřebná k vytvoření tabulek v katalogu Unity z kanálu Delta Live Tables:

  • USE CATALOG oprávnění k cílovému katalogu.
  • CREATE MATERIALIZED VIEW a USE SCHEMA oprávnění k cílovému schématu, pokud kanál vytvoří materializovaná zobrazení.
  • CREATE TABLE a USE SCHEMA oprávnění k cílovému schématu, pokud váš kanál vytváří tabulky streamová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.

Výpočetní prostředky potřebné ke spuštění kanálu s podporou katalogu Unity:

Výpočty potřebné k dotazování tabulek vytvořených kanálem Delta Live Tables pomocí katalogu Unity (včetně streamovaných tabulek a materializovaných zobrazení) zahrnují některou z následujících možností:

  • SQL Warehouses

  • Clustery v režimu sdíleného přístupu v Databricks Runtime 13.3 LTS nebo vyšší.

  • Clustery v režimu přístupu jednoho uživatele (nebo přiřazeného) v případě, že je v clusteru s jedním uživatelem povolené podrobné řízení přístupu (tj. cluster je spuštěný v Prostředí Databricks Runtime 15.4 nebo vyšší a pro pracovní prostor je povolený bezserverový výpočetní výkon). Další informace najdete v tématu Jemně odstupňované řízení přístupu u výpočetních prostředků jednoho uživatele.

  • Clustery režimu přístupu jednoho uživatele (nebo přiřazeného) na verzi 13.3 LTS až 15.3, pouze pokud vlastník tabulky spustí dotaz.

Platí další omezení výpočetních prostředků. Podívejte se na následující část.

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í můžou protokoly ovladačů zobrazit pouze vlastník kanálu a správci pracovního prostoru z clusteru, na kterém běží kanál s podporou katalogu Unity. Pokud chcete ostatním uživatelům povolit přístup k protokolům 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 verze Public Preview katalogu Unity. Viz Upgrade na dědičnost oprávnění.

  • Žádosti o přijetí změn se nepodporují. Podporují se jenom knihovny Pythonu třetích stran. Viz Správa závislostí Pythonu pro kanály Delta Live Tables.

  • 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 podřízeného poznámkovém bloku.

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

  • Tabulky jsou uloženy v umístění úložiště pro cílové schéma. Pokud není zadané umístění úložiště schématu, tabulky se ukládají do umístění úložiště katalogu. 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.

  • Karta Historie Průzkumníka katalogu nezobrazuje historii streamovaných tabulek ani 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.

  • 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_log funkci s hodnotou tabulky v kanálu nebo dotazu.

  • Nelze sdílet zobrazení vytvořené prostřednictvím event_log funkce 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, při konfiguraci výpočetních prostředků zadejte alespoň jeden pracovní proces. Viz Konfigurace výpočetních prostředků pro kanál Delta Live Tables.

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 materializovaná definice 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.

Můžu společně používat metastore Hive a kanály katalogu Unity?

Váš pracovní prostor může obsahovat kanály, které používají katalog Unity a starší metastore Hive. Jeden kanál ale nemůže zapisovat do metastoru Hive a katalogu Unity. Existující kanály, které zapisují do metastoru Hive, nelze upgradovat tak, aby používaly katalog Unity.

Vytváření nových kanálů nakonfigurovaných pomocí katalogu Unity nemá vliv na existující kanály, které nepoužívají katalog Unity. Tyto kanály nadále uchovávají 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 .

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é v případě omylu obnovit. Data lze obnovit přidáním materializovaného zobrazení nebo >st zpět do definice kanálu.
  • Odstraněním kanálu Delta Live Tables se odstraní všechny tabulky definované v daném kanálu. Kvůli této změně se uživatelské rozhraní Delta Live Tables aktualizuje, aby vás vyzve k potvrzení odstranění kanálu.
  • Interní zálohovací tabulky, včetně těch, které se používají 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 psát tabulky do katalogu Unity, musíte kanál nakonfigurovat tak, aby s ním fungoval prostřednictvím pracovního prostoru. Při vytváření kanálu vyberte v části Možnosti úložiště katalog Unity, 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 Co jsou katalogy v Azure Databricks? Další informace o schématech v katalogu Unity najdete v tématu Co jsou schémata v Azure Databricks?

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ěč read_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 MATERIALIZED VIEW
  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 MATERIALIZED VIEW
  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
  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}")
 )

Sdílení materializovaných zobrazení

Ve výchozím nastavení má oprávnění k dotazování datových sad vytvořených kanálem pouze vlastník 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.table_name
TO
  `user@databricks.com`

Odvolání výběru v tabulce

REVOKE SELECT ON TABLE
  my_catalog.my_schema.table_name
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. Uživatelské rozhraní rodokmenu Průzkumníka katalogu zobrazuje nadřazené a podřízené tabulky pro materializovaná zobrazení nebo streamované tabulky v kanálu s podporou katalogu Unity. 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ě příkazů vložení, aktualizace, odstranění a sloučení. Podpora dotazů DML na tabulky streamování umožňuje případy použití, jako je aktualizace tabulek kvůli 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;

Publikování tabulek s filtry řádků a maskami sloupců

Důležité

Tato funkce je ve verzi Public Preview.

Filtry řádků umožňují zadat funkci, která se použije jako filtr při každém načtení řádků v tabulce. Tyto filtry zajišťují, aby následné dotazy vracely pouze řádky, pro které se predikát filtru vyhodnotí jako true.

Masky sloupců umožňují maskovat hodnoty sloupce pokaždé, když tabulka načte řádky. Budoucí dotazy na tento sloupec vrátí výsledek vyhodnocené funkce místo původní hodnoty sloupce. Další informace o použití filtrů řádků a masek sloupců najdete v tématu Filtrování citlivých dat tabulky pomocí filtrů řádků a masek sloupců.

Správa filtrů řádků a masek sloupců

Filtry řádků a masky sloupců v materializovaných zobrazeních a streamovaných tabulkách by se měly přidat, aktualizovat nebo vynechat příkazem CREATE OR REFRESH .

Podrobnou syntaxi definování tabulek s filtry řádků a maskami sloupců najdete v referenčních informacích jazyka SQL pro rozdílové živé tabulky a referenční informace jazyka Delta Live Tables Python.

Chování

Při použití filtrů řádků nebo masek sloupců v kanálech delta živých tabulek jsou důležité následující podrobnosti:

  • Aktualizace jako vlastníka: Když aktualizace kanálu aktualizuje materializované zobrazení nebo streamovanou tabulku, spustí se funkce filtru řádků a masky sloupců s právy vlastníka kanálu. To znamená, že aktualizace tabulky používá kontext zabezpečení uživatele, který kanál vytvořil. Funkce, které kontrolují kontext uživatele (například CURRENT_USER a IS_MEMBER) se vyhodnocují pomocí kontextu uživatele vlastníka kanálu.
  • Dotaz: Při dotazování materializovaného zobrazení nebo tabulky streamování se funkce, které kontrolují kontext uživatele (například CURRENT_USER a IS_MEMBER) se vyhodnocují pomocí kontextu uživatele invokeru. Tento přístup vynucuje zabezpečení dat a řízení přístupu specifické pro uživatele na základě kontextu aktuálního uživatele.
  • Při vytváření materializovaných zobrazení ve zdrojových tabulkách, které obsahují filtry řádků a masky sloupců, je aktualizace materializovaného zobrazení vždy úplná aktualizace. Úplná aktualizace znovu zpracuje všechna data dostupná ve zdroji s nejnovějšími definicemi. Tento proces kontroluje, jestli se zásady zabezpečení ve zdrojových tabulkách vyhodnocují a použijí s nejaktuálnějšími daty a definicemi.

Pozorovatelnost

Pomocí funkce DESCRIBE EXTENDED, INFORMATION_SCHEMAnebo Průzkumníka katalogu můžete prozkoumat existující filtry řádků a masky sloupců, které se vztahují na dané materializované zobrazení nebo tabulku streamování. Tato funkce umožňuje uživatelům auditovat a kontrolovat přístup k datům a míry ochrany v materializovaných zobrazeních a streamovaných tabulkách.