Databázové objekty ve starším metastoru Hive
Dokumentace k Azure Databricks se zaměřuje na práci s datovými objekty pomocí katalogu Unity, ale většina pokynů se vztahuje také na práci s objekty zaregistrovanými ve starším metastoru Hive.
Tento článek se zaměřuje na práci s databázovými objekty zaregistrovanými ve starším metastoru Hive. Konkrétně tento článek popisuje, kde se práce s objekty metastoru Hive liší od práce s objekty katalogu Unity. Popisuje také další chování, která mohou být neočekávaná.
Databricks doporučuje migrovat všechna data ze starší verze metastoru Hive do katalogu Unity. Viz Upgrade tabulek a zobrazení Hive na katalog Unity.
Jak funguje zásady správného řízení dat metastoru Hive?
I když pracovní prostory Azure Databricks nadále zahrnují integrovaný metastore Hive, zásady správného řízení dat pomocí metastoru Hive jsou zastaralé. Databricks doporučuje používat Katalog Unity pro všechny zásady správného řízení dat. Viz Práce s katalogem Unity a starší metastore Hive.
Povolení pracovního prostoru pro katalog Unity nezmenšuje vaši schopnost pracovat s daty, která jsou už zaregistrovaná v metastoru Hive. Všechny datové objekty zaregistrované ve starším metastoru Hive se zobrazí v rozhraních Katalogu Unity v hive_metastore
katalogu. Hybridní metastore Hive a pracovní prostor Katalogu Unity může být užitečným modelem pro přechod dlouhodobého pracovního prostoru metastoru Hive. Výhody zásad správného řízení a výkonu služby Unity Catalog jsou ale vysoké a pracovní prostory byste měli plně přecházet, jakmile budete moct.
Metastore Hive používá řízení přístupu k tabulce (seznamy ACL) ke správě přístupu k databázovým objektům. Některá podpora zůstává pro řízení přístupu k tabulce při použití výpočetních prostředků v režimu sdíleného přístupu. Viz Řízení přístupu k tabulce metastoru Hive (starší verze).
Předávání přihlašovacích údajů je zastaralý vzor zásad správného řízení dat u databázových objektů metastoru Hive. Tento článek neřeší předávání přihlašovacích údajů. Viz předávání přihlašovacích údajů (starší verze).
Poznámka:
Kde tento článek odkazuje na řízení přístupu k datům v metastoru Hive, odkazuje na starší verzi řízení přístupu k tabulce.
Co je hive_metastore
katalog?
V pracovním prostoru, který je povolen pro Katalog Unity, se všechna schémata v metastoru Hive zobrazují jako podřízené položky hive_metastore
katalogu v oboru názvů tříúrovňového katalogu Unity. Metastore Hive ve skutečnosti nepoužívá katalogy a tento konstruktor poskytuje vstupní bod k tabulkám ve starším metastoru Hive pro uživatele katalogu Unity. K dotazování tabulek ve starší verzi metastoru Hive použijte následující syntaxi:
SELECT * FROM hive_metastore.schema_name.table_name
Poznámka:
Volitelně můžete katalog nastavit hive_metastore
jako výchozí pracovní prostor v pracovních prostorech s podporou katalogu Unity. Viz Správa výchozího katalogu.
Schémata v metastoru Hive
Ve starším metastoru Hive je schéma nejvyšší úrovní v hierarchii datových objektů.
Existuje několik důležitých rozdílů mezi katalogem Unity a metastorem Hive, včetně následujících:
- V metastoru Hive nelze vytvářet schémata pomocí Průzkumníka katalogu. Můžete zobrazit a upravit oprávnění pro schémata.
- Schémata vytvořená v metastoru Hive můžou používat pouze alfanumerické znaky ASCII a podtržítka v jejich názvech.
- Metastore Hive umožňuje deklarovat
LOCATION
schéma během vytváření. Tato funkce funguje podobně jako umístění spravovaného úložiště Katalogu Unity s následujícími rozdíly v chování:- Pokud umístění nezadáte, použije se výchozí umístění
/user/hive/warehouse/<schema-name>
. Toto umístění je v kořenovém adresáři DBFS, který se nedoporučuje ukládat žádná produkční data. - Zadanou cestou může být libovolné umístění cloudového úložiště dostupné uživateli, který vytvoří schéma, včetně identifikátorů URI cloudu, kořenového adresáře DBFS a připojení DBFS.
- Přístup k umístění nespravuje metastor Hive.
- Odstranění schématu v metastoru Hive způsobí, že se všechny soubory v tomto umístění schématu odstraní rekurzivně bez ohledu na typ tabulky (spravovaný nebo externí).
- Pokud umístění nezadáte, použije se výchozí umístění
Aby nedošlo k náhodné ztrátě dat, databricks doporučuje při práci s umístěními schématu metastoru Hive následující:
- Nepřiřazujte umístění schématu, které již obsahuje data.
- Nevytvávejte externí tabulku v umístění schématu.
- Nesdílejte umístění mezi více schématy.
- Nepřiřaďte umístění schématu, které překrývá jiné umístění schématu. Jinými slovy nepoužívejte cestu, která je podřízeným umístěním jiného schématu.
- Nepřiřaďte umístění schématu, které překrývá umístění externí tabulky.
Spravované tabulky v metastoru Hive
Spravované tabulky v metastoru Hive nemají žádné výhody výkonu spravovaných tabulek v katalogu Unity. Podobně jako spravované tabulky katalogu Unity používají spravované tabulky Metastoru Hive ve výchozím nastavení Delta Lake. V metastoru Hive na rozdíl od katalogu Unity ale můžete také vytvořit spravovanou tabulku pomocí většiny dalších formátů dat podporovaných službou Azure Databricks.
Spravované tabulky v metastoru Hive se vždy vytvářejí v umístění úložiště obsahujícího schématu. Výpočetní prostředky, které použijete k dotazování spravované tabulky, musí mít přístup k umístění úložiště.
Metastore Hive nespravuje rozložení dat spravovaných tabulek tak, jak to dělá Katalog Unity. Když odstraníte spravovanou tabulku v metastoru Hive, odstraní se okamžitě všechny podkladové datové soubory. V katalogu Unity můžete UNDROP
na druhou stranu spravovanou tabulku po dobu 7 dnů odstranit a data se trvale odstraní do 30 dnů.
Přístup založený na cestě můžete použít ke čtení nebo zápisu dat ve spravovaných tabulkách metastoru Hive, zatímco v katalogu Unity nemůžete a nepotřebujete.
Externí tabulky v metastoru Hive
Většina tabulek vytvořených v Azure Databricks před zavedením katalogu Unity byla nakonfigurovaná jako externí tabulky v metastoru Hive. Starší doporučení, která upřednostňují externí tabulky, se obvykle zaměřují na několik klíčových aspektů:
- Můžete zaregistrovat externí tabulku nad existujícími daty v cloudovém úložišti objektů.
- K datovým souborům v externích tabulkách můžete přistupovat přímo z externích systémů pro čtení nebo zápisy.
- Datové soubory se neodstranily, pokud se tabulka omylem odstranila.
- Vzhledem k tomu, že externí tabulky vyžadují
LOCATION
, produkční data by pravděpodobně omylem skončila v kořenovém adresáři DBFS.
Azure Databricks teď doporučuje tabulky spravované službou Unity Catalog pro většinu tabulkových úložišť dat. Viz Práce se spravovanými tabulkami.
Zobrazení v metastoru Hive
Zobrazení v metastoru Hive můžete deklarovat na základě libovolného zdroje dat podporovaného službou Azure Databricks. V katalogu Unity můžete deklarovat zobrazení pouze pro tabulky a zobrazení katalogu Unity, včetně cizích tabulek, materializovaných zobrazení a tabulek Delta Sharing.
Z důvodu možnosti deklarovat zobrazení proti ne tabulkovým zdrojům dat může zobrazení v metastoru Hive udělit neočekávaný nebo nezamýšlený přístup k datům v kombinaci s jinými konfiguracemi přístupu v uživatelském prostředí.
Představte si například následující:
- Tabulka
my_table
je definována pomocí cesty/mnt/my_table
připojení DBFS .- Přihlašovací údaje pro připojení DBFS jsou uložené v pracovním prostoru, takže všichni uživatelé mají přístup k této cestě ve výchozím nastavení.
- Seznamy ACL tabulky slouží k omezení přístupu ke
my_table
skupině uživatelů.- Seznamy ACL starších tabulek se vztahují pouze na výpočetní funkce konfigurované v režimu sdíleného přístupu nebo ve službě SQL Warehouse.
- Zobrazení
my_view
je definováno přímo proti cloudovému identifikátoru URI, který zálohuje stejné datové soubory'abfss://container-name@storage-account-name.dfs.core.windows.net/my_table'
.- Přihlašovací údaje URI spoléhají na zásady přístupu definované v relaci Sparku nebo v konfiguraci výpočetních prostředků.
my_view
Zobrazení má následující vlastnosti:
- Nepoužívá přihlašovací údaje pro připojení DBFS použité k připojení cloudového úložiště objektů do
/mnt/my_table
. - Nerespektuje seznamy ACL tabulky nastavené na
my_table
, bez ohledu na výpočetní konfigurace. - Vyžaduje zásady přístupu k datům nakonfigurované pro výpočetní prostředky, které poskytují přístup pro čtení .
'abfss://container-name@storage-account-name.dfs.core.windows.net/my_table'
Poznámka:
Toto je jeden z příkladů neočekávaného chování, se kterým se můžete setkat, a ne komplexní všechny potenciální nástrahy prezentované zobrazeními ve starším metastoru Hive. Databricks doporučuje používat katalog Unity pro všechny definice zobrazení.
Podpora starších tabulek Hive a HiveQL
Azure Databricks obsahuje starší verzi podpory pro tabulky Hive a funkce HiveQL. Tato funkce je zbytkem dřívějších verzí Azure Databricks a ekosystému nástrojů Apache Hadoop. Databricks nedoporučuje používat tabulky Hive ani jiné funkce Hive, protože tato funkce není optimalizovaná a nemá podporu v některých konfiguracích výpočetních prostředků.
Následující články popisují starší funkce Hivu: