Sdílet prostřednictvím


Použijte Unity Catalog s datovými procesy DLT

Důležitý

Podpora DLT pro Unity Catalog je ve verzi Public Preview.

Databricks doporučuje konfigurovat kanály DLT 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.

Poznámka

Tento článek popisuje funkčnost pro aktuální výchozí režim publikování pro pipeliny. Pipeliny vytvořené před 5. únorem 2025 mohou používat starší režim publikování a virtuální schéma LIVE. Podívejte se na schéma LIVE (starší verze).

Požadavky

Pokud chcete vytvořit streamované tabulky a materializovaná zobrazení v cílovém schématu v katalogu Unity, musíte mít následující oprávnění ke schématu a nadřazeného katalogu:

  • 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 váš pipeline vytvoří materializovaná zobrazení.
  • CREATE TABLE a USE SCHEMA oprávnění k cílovému schématu, pokud váš pipeline vytvoří streamované tabulky.

Pokud váš datový tok vytváří nová schémata, musíte mít oprávnění USE CATALOG a CREATE SCHEMA v cílovém katalogu.

Výpočetní prostředky potřebné ke spuštění datového proudu umožněného katalogem Unity:

  • Standardní režim přístupu (dříve sdílený režim přístupu). Kanál podporující Unity Catalog nelze spustit na vyhrazené výpočetní jednotce (dříve výpočetní jednotka pro jednoho uživatele). Viz omezení režimu přístupu Standard v katalogu Unity.

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

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 DLT platí následující omezení:

  • 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. Podívejte se na Povýšení na dědičnost oprávnění.
  • Formáty JAR nejsou podporovány. Podporují se jenom knihovny Pythonu třetích stran. Viz Správa závislostí Pythonu pro kanály DLT.
  • Dotazy jazyka DML (Data Manipulat Language), které upravují schéma streamované tabulky, se nepodporují.
  • Materializované zobrazení vytvořené v DLT lince nelze použít jako zdroj streamování mimo tuto linku, například v jiné lince nebo v jiném následném poznámkovém bloku.
  • Data pro materializovaná zobrazení a streamované tabulky se ukládají do úložiště ve umístění schématu, které je obsahuje. 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 v prohlížeči katalogu () nezobrazuje historii materializovaných zobrazení.
  • Při definování tabulky není vlastnost LOCATION podporována.
  • Kanály s podporou katalogu Unity nelze publikovat do metastoru Hive.
  • Nelze použít Delta Sharing s materializovaným zobrazením DLT nebo streamovanou tabulkou publikovanou 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 klauzuli COUNT(DISTINCT field_a). 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 datové toky, které používají Unity Catalog a původní 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. 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. Viz Vytvoření kanálu katalogu Unity klonováním kanálu metastoru Hive.

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 všechny existující zdroje dat a funkce DLT u kanálů, které používají katalog Unity. Jak rozhraní Python, tak SQL jsou podporována kanály, které používají katalog Unity.

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

Pokud je dlT nakonfigurovaný tak, aby uchovávala data do katalogu Unity, kanál DLT spravuje životní cyklus a oprávnění tabulky. Výsledkem je:

  • Když je tabulka odebrána z definice kanálu, další aktualizace kanálu označí odpovídající materializované zobrazení nebo položku streamované tabulky neaktivní. Neaktivní tabulky se stále dají dotazovat, ale nebudou aktualizovány. Pokud chcete vyčistit materializovaná zobrazení nebo streamované tabulky, můžete tabulku explicitně DROP.
    • Smazané tabulky můžete obnovit během 7 dnů pomocí příkazu UNDROP.
    • Chcete-li zachovat starší chování, kdy je položka materializovaného zobrazení nebo streamované tabulky odebrána z katalogu Unity při další aktualizaci kanálu, nastavte konfiguraci kanálu "pipelines.dropInactiveTables": "true". Skutečná data se uchovávají po určitou dobu, aby je bylo možné v případě omylu obnovit. Data je možné obnovit do 7 dnů přidáním materializovaného zobrazení nebo streamované tabulky zpět do definice kanálu.
  • Odstraněním kanálu DLT se odstraní všechny tabulky definované v daném kanálu. Kvůli této změně se uživatelské rozhraní DLT aktualizuje a zobrazí výzvu 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 DLT

Pokud chcete uložit tabulky do katalogu Unity, musíte nakonfigurovat svoji pipeline, aby s ním spolupracovala prostřednictvím pracovního prostoru. Při vytvořeníkanálu vyberte Katalogu Unity v části Možnosti úložiště, vyberte katalog v rozevírací nabídce 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?.

Ingestování 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 pohledy v metastore Hive
  • Automatický zavaděč s použitím funkce read_files() 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 Unity Catalog

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

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 pomocí katalogu hive_metastore:

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

Načítání dat pomocí automatického nástroje Loader

SQL

CREATE OR REFRESH STREAMING TABLE table_name
AS SELECT *
FROM STREAM read_files(
  "/path/to/uc/external/location",
  format => "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 naleznete v tématu Spravovat oprávnění v katalogu Unity.

Udělit oprávnění SELECT na 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 DLT 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.

Pro materializované zobrazení nebo streamovací tabulku v kanálu DLT s podporou katalogu Unity bude uživatelské rozhraní rodokmenu Průzkumníka katalogu také propojit s kanálem, který vytvořil materializované zobrazení nebo streamovací tabulku, 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

Můžete použít DML jazyk (příkazy insert, update, delete a merge) k úpravě streamovaných tabulek publikovaných v katalogu Unity. 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, lze spustit pouze ve sdíleném clusteru Unity Catalog nebo v SQL warehouse s použitím Databricks Runtime 13.3 LTS a vyšší.
  • Vzhledem k tomu, že streamování vyžaduje zdroje dat s povolením pouze připojování, pokud vaše procesování vyžaduje streamování z tabulky ze zdrojového streamování se změnami (například příkazy DML), nastavte příznak skipChangeCommits při čtení ze zdrojové streamovací tabulky. Při nastavení skipChangeCommits budou transakce, které odstraňují nebo upravují záznamy ve zdrojové tabulce, ignorovány. Pokud vaše zpracování nevyžaduje streamovací tabulku, můžete jako cílovou tabulku použít materializované zobrazení (které nemá omezení pouze pro přidání).

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 při každém načtení řádků tabulkou. 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 měly být přidány, aktualizovány nebo vynechány prostřednictvím příkazu CREATE OR REFRESH.

Podrobnou syntaxi definování tabulek s filtry řádků a maskami sloupců najdete v referenční dokumentace jazyka DLT SQL a referenční dokumentace jazyka PYTHON.

Chování

Při použití filtrů řádků nebo masek sloupců v kanálech DLT jsou důležité podrobnosti:

  • Aktualizovat jako vlastník: 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 streamovací tabulky se funkce, které kontrolují kontext uživatele (například CURRENT_USER a IS_MEMBER), vyhodnocují pomocí kontextu uživatele spouštěče. 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 zkontroluje, jestli se zásady zabezpečení ve zdrojových tabulkách vyhodnocují a použijí s nejvíce up-todat a definic data.

Pozorovatelnost

Pomocí DESCRIBE EXTENDED, INFORMATION_SCHEMAnebo Průzkumníka katalogu můžete prozkoumat existující filtry řádků a masky sloupců, které platí pro 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.