Práce s katalogem Unity a starší verzí metastoru Hive
Tento článek vysvětluje, jak používat metastore Hive pro jednotlivé pracovní prostory, když je pro katalog Unity povolený pracovní prostor Azure Databricks.
Pokud byl váš pracovní prostor ve službě předtím, než byl povolen pro katalog Unity, pravděpodobně obsahuje metastor Hive obsahující data, která chcete dál používat. Databricks doporučuje migrovat tabulky spravované metastorem Hive do metastoru katalogu Unity, ale pokud se rozhodnete ne, tento článek vysvětluje, jak pracovat s daty spravovanými oběma metastory.
Dotazování metastoru Hive v katalogu Unity
Metastore katalogu Unity je doplňkový, což znamená, že se dá použít s metastorem Hive pro jednotlivé pracovní prostory v Azure Databricks. Metastor Hive se zobrazí jako katalog nejvyšší úrovně volaný hive_metastore
v oboru názvů se třemi úrovněmi.
Pomocí následujícího zápisu můžete například odkazovat na tabulku volanou sales_raw
ve sales
schématu ve starším metastoru Hive:
SQL
SELECT * from hive_metastore.sales.sales_raw;
Python
display(spark.table("hive_metastore.sales.sales_raw"))
R
library(SparkR)
display(tableToDF("hive_metastore.sales.sales_raw"))
Scala
display(spark.table("hive_metastore.sales.sales_raw"))
Katalog a schéma můžete také zadat příkazem USE
:
SQL
USE hive_metastore.sales;
SELECT * from sales_raw;
Python
spark.sql("USE hive_metastore.sales")
display(spark.table("sales_raw"))
R
library(SparkR)
sql("USE hive_metastore.sales")
display(tableToDF("sales_raw"))
Scala
spark.sql("USE hive_metastore.sales")
display(spark.table("sales_raw"))
Řízení přístupu v katalogu Unity a metastoru Hive
Pokud jste nakonfigurovali řízení přístupu k tabulce v metastoru Hive, Databricks nadále vynucuje tyto řízení přístupu pro data v hive_metastore
katalogu pro clustery spuštěné v režimu sdíleného přístupu. Model přístupu k katalogu Unity se mírně liší od starších ovládacích prvků přístupu, jako jsou žádné DENY
příkazy. Metastore Hive je objekt na úrovni pracovního prostoru. Oprávnění definovaná v hive_metastore
katalogu vždy odkazují na místní uživatele a skupiny v pracovním prostoru. Podívejte se na rozdíly od řízení přístupu k tabulce.
Rozdíly od řízení přístupu k tabulce
Katalog Unity má následující klíčové rozdíly od použití ovládacích prvků přístupu k tabulce ve starším metastoru Hive v každém pracovním prostoru.
Model řízení přístupu v katalogu Unity má následující rozdíly od řízení přístupu k tabulce:
- Skupiny účtů: Zásady řízení přístupu v katalogu Unity se použijí na skupiny účtů, zatímco zásady řízení přístupu pro metastore Hive se použijí na místní skupiny pracovního prostoru. Podívejte se na rozdíl mezi skupinami účtů a místními skupinami pracovního prostoru.
USE CATALOG
aUSE SCHEMA
oprávnění jsou vyžadována v katalogu a schématu pro všechny operace s objekty uvnitř katalogu nebo schématu: Bez ohledu na oprávnění objektu objektu v tabulce musí objekt zabezpečení mítUSE CATALOG
také oprávnění pro jeho nadřazený katalog pro přístup ke schématu aUSE SCHEMA
oprávnění pro přístup k objektům v rámci schématu. Při řízení přístupu k tabulkám na úrovni pracovního prostoru naopak uděleníUSAGE
v kořenovém katalogu automaticky udělujeUSAGE
ve všech databázích, ale v kořenovém katalogu neníUSAGE
vyžadováno.- Zobrazení: V katalogu Unity nemusí být vlastník zobrazení vlastníkem odkazovaných tabulek a zobrazení.
SELECT
Oprávnění je dostatečné, spolu sUSE SCHEMA
nadřazeným schématem zobrazení aUSE CATALOG
nadřazeným katalogem. Při řízení přístupu k tabulkám na úrovni pracovního prostoru musí být vlastník zobrazení vlastníkem všech odkazovaných tabulek a zobrazení. - Žádná podpora nebo
ANY FILE
ANONYMOUS FUNCTION
: V katalogu Unity neexistuje žádný konceptANY FILE
neboANONYMOUS FUNCTION
zabezpečitelný, který by mohl umožnit neprivilegovanému uživateli spouštět privilegovaný kód. - Žádná
READ_METADATA
oprávnění: Katalog Unity spravuje přístup k zobrazení metadat jiným způsobem. Viz oprávnění katalogu Unity a zabezpečitelné objekty.
Spojení mezi objekty metastoru Unity Catalog a Hive
Pomocí zápisu oboru názvů se třemi úrovněmi můžete spojit data v metastoru katalogu Unity s daty ve starším metastoru Hive.
Poznámka:
Spojení s daty ve starším metastoru Hive bude fungovat jenom v pracovním prostoru, ve kterém se tato data nacházejí. Při pokusu o spuštění takového spojení v jiném pracovním prostoru dojde k chybě. Azure Databricks doporučuje upgradovat starší tabulky a zobrazení na katalog Unity.
Následující příklad spojí výsledky z sales_current
tabulky ve starším metastore Hive s sales_historical
tabulkou v metastore katalogu Unity, pokud order_id
jsou pole rovna.
SQL
SELECT * FROM hive_metastore.sales.sales_current
JOIN main.shared_sales.sales_historical
ON hive_metastore.sales.sales_current.order_id = main.shared_sales.sales_historical.order_id;
Python
dfCurrent = spark.table("hive_metastore.sales.sales_current")
dfHistorical = spark.table("main.shared_sales.sales_historical")
display(dfCurrent.join(
other = dfHistorical,
on = dfCurrent.order_id == dfHistorical.order_id
))
R
library(SparkR)
dfCurrent = tableToDF("hive_metastore.sales.sales_current")
dfHistorical = tableToDF("main.shared_sales.sales_historical")
display(join(
x = dfCurrent,
y = dfHistorical,
joinExpr = dfCurrent$order_id == dfHistorical$order_id))
Scala
val dfCurrent = spark.table("hive_metastore.sales.sales_current")
val dfHistorical = spark.table("main.shared_sales.sales_historical")
display(dfCurrent.join(
right = dfHistorical,
joinExprs = dfCurrent("order_id") === dfHistorical("order_id")
))
Výchozí katalog
Pro každý pracovní prostor, který je povolený pro katalog Unity, je nakonfigurovaný výchozí katalog.
Pokud při provádění operací s daty vynecháte název katalogu nejvyšší úrovně, předpokládá se výchozí katalog.
Výchozí katalog, který byl původně nakonfigurovaný pro váš pracovní prostor, závisí na tom, jak byl váš pracovní prostor povolený pro katalog Unity:
- Pokud byl váš pracovní prostor pro Katalog Unity povolen automaticky, katalog pracovních prostorů se nastavil jako výchozí katalog. Viz Automatická aktivace katalogu Unity.
- Pokud byl váš pracovní prostor pro katalog Unity povolen ručně,
hive_metastore
katalog se nastavil jako výchozí katalog.
Pokud přecházíte z metastoru Hive do katalogu Unity v rámci existujícího pracovního prostoru, obvykle je vhodné použít hive_metastore
jako výchozí katalog, abyste se vyhnuli dopadu existujícího kódu, který odkazuje na metastore Hive.
Informace o tom, jak získat a přepnout výchozí katalog, najdete v tématu Správa výchozího katalogu.
Přístupová oprávnění k datům v oboru clusteru
Při použití metastoru Hive společně s katalogem Unity se pro přístup k datům metastoru Hive používají přihlašovací údaje pro přístup k datům metastoru Hive, ale ne k datům zaregistrovaným v katalogu Unity.
Pokud uživatelé přistupují k cestám mimo katalog Unity (například cestu, která není zaregistrovaná jako tabulka nebo externí umístění), použijí se přihlašovací údaje pro přístup přiřazené ke clusteru.
Viz Připojení ke službě Azure Data Lake Storage Gen2 a Blob Storage.
Upgrade starších tabulek na katalog Unity
Tabulky v metastoru Hive nemají prospěch z celé sady funkcí zabezpečení a zásad správného řízení, které katalog Unity zavádí, například integrované auditování a řízení přístupu. Databricks doporučuje upgradovat starší tabulky přidáním do katalogu Unity.
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro