Praca z rozwiązaniem Unity Catalog i starszym magazynem metadanych Hive
W tym artykule wyjaśniono jedno podejście do dalszego używania magazynu metadanych Hive dla poszczególnych obszarów roboczych, gdy obszar roboczy usługi Azure Databricks ma włączony Unity Catalog.
Jeśli obszar roboczy był używany, zanim został włączony dla katalogu Unity, prawdopodobnie ma wbudowany magazyn metadanych Hive zawierający dane, które chcesz nadal wykorzystywać. Usługa Databricks zaleca użycie federacji metastore Hive do stworzenia katalogu federacyjnego w Unity Catalog, który odzwierciedla metastore Hive i docelowo dokonanie migracji wszystkich starszych obciążeń do korzystania z tego katalogu federacyjnego. Jeśli jednak nie rozpocząłeś jeszcze procesu federacyjnego metastore Hive, możesz użyć tego artykułu, aby dowiedzieć się, jak pracować z danymi zarejestrowanymi w starszym metastore Hive wraz z danymi zarejestrowanymi w Unity Catalog.
Wykonywanie zapytań względem magazynu metadanych Hive w wykazie aparatu Unity
Magazyn metadanych wykazu aparatu Unity jest addytywne, co oznacza, że może być używany z magazynem metadanych Hive dla poszczególnych obszarów roboczych w usłudze Azure Databricks. Magazyn metadanych Hive jest wyświetlany jako katalog najwyższego poziomu o nazwie hive_metastore
w przestrzeni nazw trzy-poziomowej.
Na przykład można odwołać się do tabeli o nazwie sales_raw
w sales
schemacie w starszym magazynie metadanych Hive, korzystając z następującej notacji:
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"))
Można również określić wykaz i schemat za pomocą instrukcji 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"))
Kontrola dostępu w wykazie aparatu Unity i magazynie metadanych Programu Hive
Jeśli skonfigurowano starszej wersji kontroli dostępu do tabel w magazynie metadanych Hive, usługa Databricks będzie nadal wymuszać te mechanizmy kontroli dostępu dla danych w katalogu hive_metastore
dla klastrów działających w trybie dostępu współdzielonego. Model dostępu do wykazu aparatu Unity różni się nieco od starszych mechanizmów kontroli dostępu, takich jak brak DENY
instrukcji. Magazyn metadanych Hive jest obiektem na poziomie obszaru roboczego. Uprawnienia zdefiniowane w wykazie hive_metastore
zawsze odwołują się do lokalnych użytkowników i grup w obszarze roboczym. Zobacz Model uprawnień Unity Catalog w porównaniu z tradycyjną kontrolą dostępu do tabel.
Model uprawnień Katalogu Unity w porównaniu z dotychczasową kontrolą dostępu do tabel
Model kontroli dostępu w katalogu Unity różni się w następujący sposób od kontroli dostępu do tabel w starszym metamagazynie Hive:
- Grupy kont: zasady kontroli dostępu w wykazie Unity Catalog są stosowane do grup kont, podczas gdy zasady kontroli dostępu dla magazynu metadanych Hive są stosowane do grup lokalnych obszaru roboczego. Zobacz Różnice między grupami kont i grupami lokalnymi obszaru roboczego.
-
USE CATALOG
iUSE SCHEMA
uprawnienia są wymagane w wykazie i schemacie dla wszystkich operacji na obiektach w wykazie lub schemacie: Niezależnie od uprawnień podmiotu zabezpieczeń w tabeli, podmiot zabezpieczeń musi również miećUSE CATALOG
uprawnienia do katalogu nadrzędnego, aby uzyskać dostęp do schematu iUSE SCHEMA
uprawnienia dostępu do obiektów w schemacie. Z drugiej strony w przypadku kontroli dostępu do tabeli na poziomie obszaru roboczego przyznawanieUSAGE
w katalogu głównym automatycznie przyznajeUSAGE
we wszystkich bazach danych, aleUSAGE
w katalogu głównym nie jest wymagane. -
Widoki: w wykazie Unity Catalog właściciel widoku nie musi być właścicielem przywoływanych tabel i widoków.
SELECT
Posiadanie uprawnień jest wystarczające wraz zeUSE SCHEMA
schematem nadrzędnym widoków iUSE CATALOG
wykazem nadrzędnym. W przypadku kontroli dostępu do tabel na poziomie obszaru roboczego właściciel widoku musi być właścicielem wszystkich przywoływanych tabel i widoków. -
Brak obsługi
ANY FILE
lubANONYMOUS FUNCTION
: W wykazie aparatu Unity nie ma pojęciaANY FILE
aniANONYMOUS FUNCTION
zabezpieczania, które może zezwalać użytkownikowi nieuprzywilejowanemu na uruchamianie uprzywilejowanego kodu. -
Brak
READ_METADATA
uprawnień: Wykaz aparatu Unity zarządza dostępem do wyświetlania metadanych w inny sposób. Zobacz Uprawnienia wykazu aparatu Unity i zabezpieczane obiekty.
Sprzężenia między katalogami aparatu Unity i obiektami magazynu metadanych Hive
Korzystając z notacji trójstopniowej przestrzeni nazw, można łączyć dane w magazynie metadanych wykazu aparatu Unity z danymi w starszym magazynie metadanych Programu Hive.
Uwaga
Sprzężenia z danymi w starszym magazynie metadanych Hive będą działać tylko w obszarze roboczym, w którym znajdują się te dane. Próba uruchomienia takiego sprzężenia w innym obszarze roboczym powoduje wystąpienie błędu. Usługa Azure Databricks zaleca uaktualnienie starszych tabel i widoków do wykazu aparatu Unity.
Poniższy przykład łączy wyniki z sales_current
tabeli w starszym magazynie metadanych Hive z tabelą sales_historical
w magazynie metadanych wykazu aparatu Unity, gdy order_id
pola są równe.
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")
))
Katalog domyślny
Domyślny wykaz jest skonfigurowany dla każdego obszaru roboczego, który jest włączony dla wykazu aparatu Unity.
Jeśli pominięto nazwę wykazu najwyższego poziomu podczas wykonywania operacji na danych, przyjmuje się domyślny wykaz.
Domyślny wykaz, który został początkowo skonfigurowany dla obszaru roboczego, zależy od sposobu włączenia obszaru roboczego dla wykazu aparatu Unity:
- Jeśli obszar roboczy został włączony automatycznie dla wykazu aparatu Unity, wykaz obszarów roboczych został ustawiony jako katalog domyślny. Patrz Automatyczne włączanie wykazu Unity.
- Jeśli obszar roboczy został włączony ręcznie dla wykazu aparatu Unity,
hive_metastore
wykaz został ustawiony jako wykaz domyślny.
Jeśli przechodzisz z magazynu metadanych Hive do katalogu Unity w istniejącym obszarze roboczym, warto użyć hive_metastore
jako katalogu domyślnego, aby uniknąć wpływu na istniejący kod odwołujący się do magazynu metadanych Hive, chyba że kompletnie zakończyłeś migrację z magazynu metadanych Hive.
Aby dowiedzieć się, jak pobrać i przełączyć katalog domyślny, zobacz Zarządzanie wykazem domyślnym
Uprawnienia dostępu do danych w zakresie klastra
W przypadku korzystania z magazynu metadanych Hive wraz z wykazem aparatu Unity poświadczenia dostępu do danych skojarzone z klastrem są używane do uzyskiwania dostępu do danych magazynu metadanych Hive, ale nie do rejestrowania danych w wykazie aparatu Unity.
Jeśli użytkownicy uzyskują dostęp do ścieżek spoza wykazu aparatu Unity (takich jak ścieżka niezarejestrowana jako tabela lub lokalizacja zewnętrzna), używane są poświadczenia dostępu przypisane do klastra.
Zobacz Nawiązywanie połączenia z usługą Azure Data Lake Storage Gen2 i usługą Blob Storage.
Uaktualnianie starszych tabel do wykazu aparatu Unity
Tabele w magazynie metadanych Hive nie korzystają z pełnego zestawu funkcji zabezpieczeń i ładu, które wprowadza Unity Catalog, takich jak wbudowany audyt, śledzenie pochodzenia i kontrola dostępu. Usługa Databricks zaleca używanie federacji magazynu metadanych Hive do migrowania danych zarejestrowanych w magazynie metadanych Hive do katalogu aparatu Unity lub uaktualniania starszych tabel bezpośrednio przez dodanie ich do wykazu aparatu Unity.