Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
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.
Ważne
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. Usługa Databricks zaleca migrowanie tabel oraz obciążeń powiązanych z nimi do Unity Catalogu 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;
Pyton
display(spark.table("hive_metastore.sales.sales_raw"))
R
library(SparkR)
display(tableToDF("hive_metastore.sales.sales_raw"))
Skala
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;
Pyton
spark.sql("USE hive_metastore.sales")
display(spark.table("sales_raw"))
R
library(SparkR)
sql("USE hive_metastore.sales")
display(tableToDF("sales_raw"))
Skala
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_metastore
zawsze 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 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 kolei w przypadku kontroli dostępu do tabeli na poziomie obszaru roboczego przyznanieUSAGE
w katalogu głównym automatycznie przyznajeUSAGE
we wszystkich bazach danych, aleUSAGE
w 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
SELECT
jest wystarczające, wraz zUSE SCHEMA
na schemacie nadrzędnych widoków iUSE CATALOG
na 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 FILE
lubANONYMOUS FUNCTION
: W katalogu Unity nie istnieje pojęcie zabezpieczeń typuANY FILE
aniANONYMOUS 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_METADATA
uprawnień: 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.
Uwaga
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;
Pyton
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))
Skala
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_metastore
został 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.