Sdílet prostřednictvím


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 a USE 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ít USE CATALOG také oprávnění pro jeho nadřazený katalog pro přístup ke schématu a USE 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ěluje USAGE 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 s USE SCHEMA nadřazeným schématem zobrazení a USE 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 FILEANONYMOUS FUNCTION: V katalogu Unity neexistuje žádný koncept ANY FILE nebo ANONYMOUS 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.