Sdílet prostřednictvím


Použijte katalog Unity s řetězci

Databricks doporučuje konfigurovat deklarativní kanály Sparku Lakeflow pomocí katalogu Unity. Použití katalogu Unity je výchozí pro nově vytvořené kanály.

Kanály nakonfigurované pomocí katalogu Unity publikují všechna definovaná materializovaná zobrazení a streamované tabulky do zadaného katalogu a schématu. Pipeliny katalogu Unity mohou čí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. Viz LIVE schema (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.

Požadavky na výpočetní prostředky pro spuštění kanálu s podporou katalogu Unity:

  • Váš výpočetní prostředek musí být nakonfigurovaný pomocí standardního režimu přístupu. Vyhrazené výpočetní prostředky se nepodporují. Viz režimy přístupu.

Výpočetní výkon potřebný k dotazování tabulek, které jsou vytvořeny pomocí pipeline a katalogu Unity (včetně streamovaných tabulek a materializovaných pohledů), zahrnuje některé z následujících možností:

  • sklady SQL
  • Standardní režim přístupu počítání na Databricks Runtime 13.3 LTS nebo vyšším.
  • Výpočetní režim vyhrazeného přístupu, pokud je na vyhrazených výpočetních prostředcích povolené podrobné řízení přístupu (to znamená, že běží na 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 k vyhrazeným výpočetním prostředkům.
  • Výpočet v režimu vyhrazeného přístupu ve verzích 13.3 LTS až 15.3, a to 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 datovými kanály existují následující omezení:

  • Nelze vytvořit pipeline s podporou Unity Catalog ve workspace připojeném k metastore, který byl vytvořen během veřejného náhledu Unity Catalog. Viz Upgrade k dědičnosti 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.
  • Dotazy jazyka DML (Data Manipulat Language), které upravují schéma streamované tabulky, se nepodporují.
  • Materializované zobrazení vytvořené v kanálu nelze použít jako zdroj streamování mimo tento kanál, například v jiném kanálu nebo podřízeném poznámkovém bloku.
  • Data pro materializovaná zobrazení a streamované tabulky se ukládají do úložního 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.
  • Unity Catalog-umožněné pipeliny nemohou publikovat do Hive metastore.

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.

Mohu používat Hive metastore a Unity Catalog pipelines společně?

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 ukládají data do úložiště metadat Hive pomocí nakonfigurovaného úložiště.

Pokud není v tomto dokumentu uvedeno jinak, všechny existující zdroje dat a funkčnost kanálů jsou podporovány kanály, které používají katalog Unity. Jak rozhraní Python, tak SQL jsou podporována kanály, které používají katalog Unity.

Neaktivní tabulky

Pokud je kanál nakonfigurovaný tak, aby uchovával data do katalogu Unity, kanál spravuje životní cyklus a oprávnění tabulky. Tabulky se můžou stát neaktivní, pokud se jejich definice odebere z kanálu a po odstranění kanálu se odstraní.

Když ze zdroje kanálu odeberete definici tabulky, označí další aktualizace kanálu odpovídající materializované zobrazení nebo položku tabulky streamování jako neaktivní. Neaktivní tabulky můžete pořád dotazovat, ale kanál je už neaktualizovat. Pokud chcete vyčistit materializovaná zobrazení nebo streamované tabulky, explicitně DROP tabulku.

  • Vyřazené tabulky můžete obnovit do 7 dnů pomocí UNDROP příkazu.
  • 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í kanálu zcela (na rozdíl od odebrání definice tabulky ze zdroje kanálu) odstraní také všechny tabulky definované v daném kanálu. Uživatelské rozhraní vás vyzve, abyste potvrdili odstranění datového toku.

Zápis tabulek z pipeline do katalogu Unity

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 vytváření pipeline vyberte Unity Catalog pod možnostmi úložiště, vyberte katalog v rozbalované nabídce Katalog a vyberte existující schéma nebo zadejte název nového schématu v rozbalované 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?.

Načíst data do pipeline katalogu Unity

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

  • Unity Catalog spravované a externí tabulky, zobrazení, materializovaná zobrazení a streamovací tabulky.
  • Tabulky a pohledy v metastore Hive
  • Využití automatického zavaděče s funkcí read_files() pro čtení z externích umístění Unity Catalog.
  • 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

@dp.materialized_view
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

@dp.table
def table_name():
  return spark.readStream.table("my_catalog.my_schema.table")

Načíst data z Hive metastore

Datový kanál, který používá Unity Catalog, může číst data z tabulek Hive úložiště metadat pomocí hive_metastore katalogu.

SQL

CREATE OR REFRESH MATERIALIZED VIEW
  table_name
AS SELECT
  *
FROM
  hive_metastore.some_schema.table;

Python

@dp.materialized_view
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

@dp.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`

Odvolat výběr na 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 }

Zobrazit původ pro kanálové zpracování

Rodokmen tabulek definovaných v kanálech je viditelný v Průzkumníku katalogu. Uživatelské rozhraní "linage UI" v Catalog Explorer ukazuje tabulky předcházející a navazující na materializované pohledy nebo streamující tabulky v pipeline podporované Unity Catalog. Další informace o rodokmenu katalogu Unity najdete v tématu Zobrazení rodokmenu dat pomocí katalogu Unity.

Pro materializované zobrazení nebo streamovací tabulku v kanálu 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 pouze připojované zdroje dat, vyžaduje-li vaše zpracování streamování ze zdrojové streamovací tabulky, která obsahuje změny (například prostřednictvím příkazů DML), nastavte příznak skipChangeCommits při čtení 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ů

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 Filtry řádků a masky 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í příručce k jazyku SQL pro kanály a referenční příručce k jazyku Python pro deklarativní kanály Lakeflow Spark.

Chování

Při použití filtrů řádků nebo masek sloupců v kanálu jsou důležité následující podrobnosti:

  • Obnovit jako vlastník: Když aktualizace kanálu obnoví materializované zobrazení nebo streamovanou tabulku, funkce filtru řádků a maskování sloupců se spustí 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, zda jsou bezpečnostní zásady na zdrojových tabulkách posuzovány a aplikovány s nejaktuálnějšími daty a definicemi.

Observability

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.