Sdílet prostřednictvím


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 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, 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.