Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule wyjaśniono jedno z podejść do kontynuowania używania starszego metastore Hive dla poszczególnych obszarów roboczych, gdy obszar roboczy usługi Azure Databricks jest włączony z Unity Catalog.
Jeśli obszar roboczy był już używany, zanim został włączony dla Unity Catalog, prawdopodobnie ma on magazyn metadanych Hive, zawierający dane, które możesz chcieć dalej wykorzystywać. W tym artykule opisano, jak kontynuować pracę z tabelami zarejestrowanymi w magazynie metadanych Hive.
Important
Magazyn metadanych Hive dla każdego obszaru roboczego jest starszą funkcją, a instrukcje podane w tym artykule reprezentują starsze przepływy pracy.
Tabele w metasklepie Hive nie korzystają z pełnego zakresu funkcji bezpieczeństwa i zarządzania oferowanych przez Unity Catalog, takich jak wbudowane audyty, linie pochodzenia i kontrola dostępu. Databricks zaleca migrowanie tych tabel i obciążeń, które się do nich odwołują, do Unity Catalog oraz wyłączenie bezpośredniego dostępu do magazynu metadanych Hive.
Dostępne są dwie ścieżki migracji:
Uaktualnij wszystkie tabele zarejestrowane w magazynie metadanych Hive do Unity Catalog.
Sfederuj magazyn metadanych Hive z Unity Catalog przy użyciu federacji magazynu metadanych Hive, aby uzyskać bardziej stopniowe podejście. Federacja metastore Hive tworzy obcy katalog w Unity Catalog, który odzwierciedla metastore Hive.
Zobacz Jak zaktualizować obszary robocze Azure Databricks do Unity Catalog.
Wykonywanie zapytań względem starszego magazynu metadanych Hive w Unity Catalog.
Repozytorium metadanych Unity Catalog jest adytatywne, co oznacza, że może być używane z magazynem metadanych Hive dla każdego obszaru roboczego w usłudze Azure Databricks. Magazyn metadanych Hive jest wyświetlany jako katalog najwyższego poziomu o nazwie hive_metastore w trópoziomowej przestrzeni nazw.
Na przykład możesz odwołać się do tabeli o nazwie sales_raw w schemacie sales 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 Unity Catalog w porównaniu ze starszym metastore Hive
Jeśli skonfigurowano starszą kontrolę dostępu do tabel w magazynie metadanych Hive, usługa Databricks będzie nadal wymuszać te mechanizmy kontroli dostępu dla danych w hive_metastore wykazie dla klastrów działających w trybie dostępu standardowego.
Model dostępu do wykazu aparatu Unity różni się nieco od starszych kontroli dostępu:
- pl-PL: Metastore: Unity Catalog jest obiektem na poziomie konta, a Hive metastore jest obiektem na poziomie obszaru roboczego. Uprawnienia zdefiniowane w katalogu
hive_metastorezawsze odwołują się do lokalnych użytkowników i grup w obszarze roboczym. - Grupy kont: Zasady kontroli dostępu w 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ódła grup.
-
USE CATALOGiUSE SCHEMAuprawnienia 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 CATALOGuprawnienia do katalogu nadrzędnego, aby uzyskać dostęp do schematu iUSE SCHEMAuprawnienia dostępu do obiektów w schemacie. Z kolei w przypadku kontroli dostępu do tabeli na poziomie obszaru roboczego przyznanieUSAGEw katalogu głównym automatycznie przyznajeUSAGEwe wszystkich bazach danych, aleUSAGEw katalogu głównym nie jest wymagane. -
Widoki: W Unity Catalog właściciel widoku nie musi być właścicielem przywołanych tabel i widoków. Posiadanie uprawnienia
SELECTjest wystarczające, wraz zUSE SCHEMAna schemacie nadrzędnych widoków iUSE CATALOGna wykazie nadrzędnym. W przypadku kontroli dostępu do tabel na poziomie obszaru roboczego właściciel widoku musi być właścicielem wszystkich przywołynych tabel i widoków. -
Brak obsługi
ANY FILElubANONYMOUS FUNCTION: W katalogu Unity nie istnieje pojęcie zabezpieczeń typuANY FILEaniANONYMOUS FUNCTION, które mogłyby pozwolić użytkownikowi bez uprawnień na uruchomienie kodu uprzywilejowanego. -
Brak obsługi dla
DENY: Model uprawnień Unity Catalog jest oparty na zasadzie najmniejszych uprzywilejowań. Uprawnienia, które nie zostały przyznane, są niejawnie odrzucane. -
Brak
READ_METADATAuprawnień: Unity Catalog zarządza dostępem do metadanych w inny sposób. Zobacz Uprawnienia katalogu Unity i obiekty do zabezpieczenia.
Połączenia między katalogiem Unity a obiektami metastore Hive
Korzystając z notacji trójstopniowej przestrzeni nazw, można łączyć dane w magazynie metadanych katalogu Unity z danymi w starszym magazynie metadanych Hive.
Note
Połączenie z danymi w starszym metastore Hive będzie działać tylko w obszarze roboczym, w którym znajdują się te dane. Próba uruchomienia takiego złączenia w innym obszarze roboczym skutkuje błędem. Usługa Azure Databricks zaleca aktualizację starszych tabel i widoków do Unity Catalog.
Poniższy przykład łączy wyniki z tabeli sales_current w starszym metastore Hive z tabelą sales_historical w katalogu Unity, gdy pola order_id 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 katalog jest konfigurowany dla każdego obszaru roboczego z włączonym katalogiem Unity.
Jeśli pominięto nazwę wykazu najwyższego poziomu podczas wykonywania operacji na danych, przyjmuje się domyślny wykaz.
Domyślny katalog, który został początkowo skonfigurowany dla Twojego obszaru roboczego, zależy od metody włączania obszaru roboczego do Unity Catalog.
- Jeśli obszar roboczy został automatycznie włączony dla katalogu Unity, katalog obszaru roboczego został ustawiony jako domyślny katalog. Zobacz Automatyczne włączanie Unity Catalog.
- Jeśli obszar roboczy został włączony ręcznie dla Unity Catalog, katalog
hive_metastorezostał ustawiony jako katalog domyślny.
Jeśli przechodzisz z Hive metastore do Unity Catalog 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 Hive metastore, chyba że całkowicie z niego zrezygnowałeś.
Aby dowiedzieć się, jak pobrać i przełączyć katalog domyślny, zobacz Zarządzanie wykazem domyślnym
Uprawnienia dostępu do danych na poziomie klastra
W przypadku korzystania z magazynu metadanych Hive wraz z Unity Catalog, poświadczenia dostępu do danych skojarzone z klastrem są używane do uzyskiwania dostępu do danych magazynu metadanych Hive, ale nie do danych zarejestrowanych w Unity Catalog.
Jeśli użytkownicy mają dostęp do ścieżek spoza Unity Catalog (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 i usługą Blob Storage.
Wyłączanie dostępu do magazynu metadanych Hive po migracji
Po migracji tabel do Unity Catalog, Databricks zaleca jawne wyłączenie bezpośredniego dostępu do Hive metastore. Domyślnie klastry obliczeniowe usługi Azure Databricks nadal łączą się z magazynem metadanych Hive nawet po migracji, chyba że jawnie wyłączysz dostęp do magazynu metadanych Hive.
Możesz wyłączyć bezpośredni dostęp do magazynu metadanych Hive w całym obszarze roboczym lub indywidualnie dla klastra obliczeniowego. Zobacz Wyłączanie dostępu do magazynu metadanych Hive używanego przez obszar roboczy usługi Azure Databricks.