Práce s katalogem Unity a starší verzí metastoru Hive
Tento článek vysvětluje jeden přístup k pokračování v používání metastoru Hive pro jednotlivé pracovní prostory, když je váš pracovní prostor Azure Databricks povolený pro Službu Unity Catalog.
Pokud byl váš pracovní prostor provozován před povolením katalogu Unity, pravděpodobně obsahuje integrovaný metastor Hive, který obsahuje data, jež chcete dál využívat. Databricks doporučuje použít federaci metastoru Hive k vytvoření federovaného katalogu v katalogu Unity, který zrcadlí metastore Hive a nakonec migruje všechny starší úlohy, aby používaly tento federovaný katalog. Pokud jste ale ještě nespustila proces federace metastoru Hive, můžete pomocí tohoto článku zjistit, jak pracovat s daty zaregistrovanými ve starším metastoru Hive společně s daty zaregistrovanými v Katalogu Unity.
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 starších verzí řízení přístupu k tabulce v metastoru Hive, Databricks bude nadále vynucovat tyto řízení přístupu pro data v katalogu hive_metastore
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. Viz Model oprávnění katalogu Unity v porovnání se starší verzí řízení přístupu k tabulce.
model oprávnění katalogu Unity v porovnání se starší verzí řízení přístupu k tabulce
Model řízení přístupu v katalogu Unity se liší následujícími způsoby od řízení přístupu k tabulce ve starším metastoru Hive:
- 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. Viz Typy skupin v Azure Databricks.
-
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, je vhodné použít hive_metastore
jako výchozí katalog, abyste se vyhnuli dopadu existujícího kódu, který odkazuje na metastore Hive, pokud jste plně nemigrovali 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í, jako je například integrované auditování, rodokmen a řízení přístupu. Databricks doporučuje používat federaci metastoru Hive k migraci dat zaregistrovaných v metastoru Hive do katalogu Unity nebo k upgradu starších tabulek přímo jejich přidáním do katalogu Unity.