A Unity Catalog és az örökölt Hive-metaadattár használata
Ez a cikk bemutatja, hogyan használhatja a munkaterületenkénti Hive metaadattárat, ha az Azure Databricks-munkaterület engedélyezve van a Unity Catalogban.
Ha a munkaterület még azelőtt volt használatban, hogy engedélyezték volna a Unity Catalogban, valószínűleg van egy Hive-metaadattára, amely a továbbra is használni kívánt adatokat tartalmazza. A Databricks azt javasolja, hogy migrálja a Hive metaadattár által kezelt táblákat a Unity Catalog metaadattárba, de ha ezt nem teszi meg, ez a cikk bemutatja, hogyan dolgozhat mindkét metaadattár által kezelt adatokkal.
A Hive metaadattár lekérdezése a Unity Katalógusban
A Unity Catalog metaadattára additív, ami azt jelenti, hogy az Azure Databricks munkaterületenkénti Hive metaadattárával is használható. A Hive metaadattár a háromszintű névtérben hívott hive_metastore
legfelső szintű katalógusként jelenik meg.
Az örökölt Hive metaadattár sémájában sales
például sales_raw
a következő jelöléssel hivatkozhat egy táblára:
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"))
A katalógust és a sémát utasítással USE
is megadhatja:
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"))
Hozzáférés-vezérlés a Unity Catalogban és a Hive-metaadattárban
Ha táblahozzáférés-vezérlést konfigurált a Hive metaadattárban, a Databricks továbbra is kikényszeríti ezeket a hozzáférési vezérlőket a katalógusban lévő hive_metastore
adatokhoz a megosztott hozzáférési módban futó fürtök esetében. A Unity Catalog hozzáférési modellje kissé eltér az örökölt hozzáférés-vezérlőktől, például nincs DENY
utasítás. A Hive metaadattár egy munkaterületszintű objektum. A katalógusban hive_metastore
meghatározott engedélyek mindig a munkaterület helyi felhasználóira és csoportjaira vonatkoznak. Lásd a táblahozzáférés-vezérlés különbségeit.
Különbségek a táblahozzáférés-vezérléstől
A Unity Catalog az alábbi főbb különbségeket tartalmazza az örökölt Hive-metaadattár táblahozzáférés-vezérlőinek minden munkaterületen való használatához képest.
A Unity Catalog hozzáférés-vezérlési modellje a következő különbségeket tartalmazza a táblahozzáférés-vezérléstől:
- Fiókcsoportok: A Unity Catalog hozzáférés-vezérlési szabályzatai a fiókcsoportokra, míg a Hive-metaadattár hozzáférés-vezérlési szabályzatai a munkaterületek helyi csoportjaira vonatkoznak. Lásd a fiókcsoportok és a munkaterület helyi csoportjai közötti különbséget.
USE CATALOG
ésUSE SCHEMA
engedélyekre van szükség a katalógusban és a sémában a katalóguson vagy sémán belüli objektumokon végzett összes művelethez: Függetlenül attól, hogy az egyszerű jogosultságok egy táblán vannak-e, a rendszerbiztonsági tagnak rendelkeznie kell aUSE CATALOG
szülőkatalógus jogosultságával a sémához való hozzáféréshez és aUSE SCHEMA
sémán belüli objektumok eléréséhez szükséges jogosultsággal. A munkaterület szintű tábla-hozzáférésvezérléssel viszont aUSAGE
megadása a gyökérkatalógusban automatikusan megadja aUSAGE
címet az összes adatbázisban, de aUSAGE
címre nincs szükség a gyökérkatalógusban.- Nézetek: A Unity Catalogban a nézet tulajdonosának nem kell a nézet hivatkozott tábláinak és nézeteinek tulajdonosának lennie.
SELECT
A jogosultság megadása a nézetek szülősémán ésUSE CATALOG
a szülőkatalóguson isUSE SCHEMA
elegendő. A munkaterület-szintű táblahozzáférés-vezérlők esetében a nézet tulajdonosának az összes hivatkozott tábla és nézet tulajdonosának kell lennie. - A Unity Katalógusban nincs olyan
ANY FILE
ANONYMOUS FUNCTION
vagy biztonságos fogalomANY FILE
ANONYMOUS FUNCTION
, amely lehetővé tenné a jogosultsággal nem rendelkező felhasználók számára a kiemelt kód futtatását. - Nincs
READ_METADATA
jogosultság: A Unity Catalog más módon kezeli a metaadatok megtekintéséhez való hozzáférést. Lásd: Unity Catalog-jogosultságok és biztonságos objektumok.
Illesztések a Unity Catalog és a Hive metaadattár-objektumok között
Háromszintű névtér-jelöléssel összekapcsolhatja az adatokat egy Unity Catalog-metaadattárban az örökölt Hive-metaadattár adataival.
Feljegyzés
Az örökölt Hive metaadattárban lévő adatok összekapcsolása csak azon a munkaterületen működik, ahol az adatok találhatók. Ha egy ilyen illesztés futtatása egy másik munkaterületen történik, hibaüzenet jelenik meg. Az Azure Databricks azt javasolja, hogy frissítse az örökölt táblákat és nézeteket a Unity Catalogra.
Az alábbi példa az sales_current
örökölt Hive metaadattárban lévő táblából származó eredményeket illeszti össze a sales_historical
Unity Katalógus metaadattárában lévő táblával, ha a order_id
mezők egyenlőek.
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")
))
Alapértelmezett katalógus
Minden olyan munkaterülethez, amely engedélyezve van a Unity Cataloghoz, egy alapértelmezett katalógus van konfigurálva.
Ha adatműveletek végrehajtásakor kihagyja a legfelső szintű katalógus nevét, a rendszer feltételezi az alapértelmezett katalógust.
A munkaterülethez eredetileg konfigurált alapértelmezett katalógus attól függ, hogy a munkaterület hogyan lett engedélyezve a Unity-katalógusban:
- Ha a munkaterület automatikusan engedélyezve lett a Unity-katalógushoz, a munkaterület-katalógus alapértelmezett katalógusként lett beállítva. Lásd a Unity katalógus automatikus engedélyezése témakört.
- Ha a munkaterület manuálisan lett engedélyezve a Unity-katalógushoz, a
hive_metastore
katalógus alapértelmezett katalógusként lett beállítva.
Ha egy meglévő munkaterületen belül a Hive-metaadattárról a Unity-katalógusra vált, általában érdemes alapértelmezett katalógusként használni hive_metastore
, hogy ne befolyásolja a hive metaadattárra hivatkozó meglévő kódot.
Az alapértelmezett katalógus beszerzéséről és váltásáról az alapértelmezett katalógus kezelése című témakörben olvashat
Fürt hatókörű adathozzáférési engedélyei
Ha a Hive metaadattárat a Unity Catalog mellett használja, a rendszer a fürthöz társított adathozzáférési hitelesítő adatokat használja a Hive metaadattár adatainak eléréséhez, a Unity Katalógusban regisztrált adatokat azonban nem.
Ha a felhasználók a Unity-katalóguson kívüli elérési utakhoz férnek hozzá (például egy táblaként vagy külső helyként nem regisztrált elérési utat), akkor a rendszer a fürthöz rendelt hozzáférési hitelesítő adatokat használja.
Lásd: Csatlakozás az Azure Data Lake Storage Gen2-hez és a Blob Storage-hoz.
Régi táblák frissítése a Unity Catalogra
A Hive-metaadattár táblái nem élvezhetik a Unity Catalog által bevezetett biztonsági és szabályozási funkciók teljes készletét, például a beépített naplózást és a hozzáférés-vezérlést. A Databricks azt javasolja, hogy frissítse az örökölt táblákat a Unity Cataloghoz való hozzáadásával.