Adatbázis-objektumok az örökölt Hive-metaadattárban
Az Azure Databricks dokumentációja az adatobjektumok Unity Cataloghasználatával történő használatára összpontosít, de az utasítások többsége az örökölt Hive-metaadattárban regisztrált objektumokra is vonatkozik.
Ez a cikk az örökölt Hive-metaadattárban regisztrált adatbázis-objektumokkal való munkával foglalkozik. Ez a cikk arra hívja fel a where, hogy a Hive-metaadattár-objektumok használata eltér a Unity Catalog objektumoktól. Emellett a váratlan viselkedéseket is ismerteti.
A Databricks azt javasolja, hogy az összes adatot migrálja a régi Hive metatérraktárból a Unity Catalog-ba. Lásd: Hive tables és views frissítése a Unity Catalog.
Hogyan működik a Hive metaadattár-adatszabályozása?
Bár az Azure Databricks-munkaterületek továbbra is tartalmazzák a beépített Hive-metaadattárat, a Hive-metaadattárat használó adatszabályozás elavult. A Databricks azt javasolja, hogy a Unity Catalog-t használják minden adatszabályozáshoz. Lásd: Dolgozzon együtt a Unity Catalog és az örökölt Hive-metaadattárral.
A Unity Catalog munkaterületének engedélyezése nem csökkenti a Hive metaadattárban már regisztrált adatokkal való munkát. Az örökölt Hive-metaadattárban regisztrált összes adatobjektum megjelenik a Unity Cataloghive_metastore
cataloginterfészeiben. A hibrid Hive-metaadattár és a Unity Catalog munkaterület hasznos modell lehet a Hive metaadattár munkaterület régi verziója átalakításához. A Unity Catalog adatszabályozási és teljesítménybeli előnyei azonban magasak, és a lehető leghamarabb át kell váltania a munkaterületeket.
A Hive metaadattár table hozzáférés-vezérlést (table ACL-eket) használ az adatbázis-objektumokhoz való hozzáférés kezeléséhez. Bizonyos támogatás elérhető table hozzáférés-vezérléshez, amikor számítást használ megosztott hozzáférési módban. Lásd a Hive metaadattár table örökölt hozzáférés-vezérlés.
A hitelesítő adatok átengedése a Hive metaadattár-adatbázis-objektumok adatszabályozásának elavult mintája. Ez a cikk nem foglalkozik a hitelesítő adatok átadásával. Lásd: Hitelesítő adatok átengedés (örökölt).
Feljegyzés
Where ez a cikk a Hive metaadattárban lévő adathozzáférés-vezérlésre hivatkozik, az örökölt table hozzáférés-vezérlésre vonatkozik.
Mi a hive_metastore
catalog?
A Unity Catalogszámára engedélyezett munkaterületen a Hive-metaadattár összes sémája a unity Catalog háromszintű névtérben a hive_metastore
catalog gyermekeiként jelenik meg. A Hive metaadattára valójában nem használja a catalogs-t, és ez a szerkezet belépési pontot biztosít a tables a régi Hive metaadattárban a Unity Catalog felhasználók számára. A következő szintaxis használatával kérdezheti le tables az örökölt Hive-metaadattárban:
SELECT * FROM hive_metastore.schema_name.table_name
Feljegyzés
Opcionálisan beállíthatja a sethive_metastore
catalog-t alapértelmezettként a Unity Catalog-enabled munkaterületeken. Lásd: Alapértelmezett catalogkezelése.
Sémák a Hive metaadattárában
Az örökölt Hive-metaadattárban egy schema az adatobjektum-hierarchia legmagasabb szintje.
Van néhány fontos különbség a Unity Catalog és a Hive metaadattára között, beleértve a következőket:
- A Hive-metaadattárban nem hozhat létre sémákat Catalog Explorer használatával. Megtekintheti és szerkesztheti a sémák engedélyeit.
- A Hive-metaadattárban létrehozott sémák csak alfanumerikus ASCII-karaktereket és aláhúzásjeleket használhatnak a nevükben.
- A Hive metaadattár lehetővé teszi egy
LOCATION
deklarálását egy schema számára a létrehozás során. Ez hasonlóan működik a Unity Catalog felügyelt tárolóhelyekhez, a következő viselkedési különbségekkel:- Ha nem ad meg helyet, a rendszer az alapértelmezett helyet
/user/hive/warehouse/<schema-name>
használja. Ez a hely a DBFS gyökerén található, ami nem ajánlott éles adatok tárolásához. - A megadott elérési út bármely olyan felhőbeli tárolóhely lehet, amely a schemalétrehozó felhasználó számára elérhető, beleértve a felhőalapú URI-kat, a DBFS-gyökér- és DBFS-csatlakoztatásokat.
- A helyhez való hozzáférést nem a Hive metaadattára kezeli.
- Ha töröl egy schema a Hive-metaadattárban, az adott schema helyen lévő összes fájl rekurzív módon törlődik, függetlenül a table típusától (felügyelt vagy külső).
- Ha nem ad meg helyet, a rendszer az alapértelmezett helyet
A véletlen adatvesztés elkerülése érdekében a Databricks a következőket javasolja a Hive metaadattár schema helyek használata esetén:
- Ne rendeljen hozzá olyan schema helyet, amely már tartalmaz adatokat.
- Ne hozz létre külső tableschema helyen.
- Ne ossza meg a helyet több séma között.
- Ne rendeljen hozzá olyan schema helyet, amely egy másik schema helyet fed át. Más szóval, ne használjon olyan elérési utat, amely egy másik schema hely alárendeltjeként tartozik.
- Ne rendeljen hozzá olyan schema helyet, amely átfedésben van egy külső tablehelyével.
Felügyelt tables a Hive metaadattárában
A Hive metastore-ban kezelt tables nem rendelkezik a Unity Catalog-ban kezelt tables teljesítménybeli előnyeinek egyikével sem. A Unity Catalog által felügyelt tables-hez hasonlóan, a Hive metaadattár felügyeletét is alapértelmezés szerint a Delta Lake használja tables. A Hive metaadattárban azonban, a Unity Catalog-tal ellentétben, felügyelt table-et is létrehozhatsz az Azure Databricks által támogatott legtöbb más adatformátum használatával.
A Hive metaadattárában a kezelt tables mindig a schematárolóhelyén jön létre. A felügyelt table lekérdezéséhez használt számításnak hozzáféréssel kell rendelkeznie a tárolási helyhez.
A Hive metaadattár nem úgy kezeli a felügyelt tables adatelrendezését, mint ahogy a Unity Catalog teszi. Amikor egy felügyelt table törlésére kerül sor a Hive metaadattárában, a rendszer azonnal törli az összes mögöttes adatfájlt. Azonban a Unity Catalog-ban egy felügyelt table 7 napig UNDROP
számára van elérhető, és az adatok 30 nap múlva véglegesen törlődnek.
Az elérési út alapú hozzáférést használva adatokat olvashat vagy írhat a Felügyelt Hive-metaadattárban tables, miközben a Unityben Catalog nem, és nem is kell.
Külső tables a Hive metaadattárában
Az Azure Databricksben a Unity Catalog bevezetése előtt létrehozott tables többsége külső tables-ként lett konfigurálva a Hive metatulajdonságok tárolójában. A külső tables előnyben részesített régi javaslatok általában néhány fő szempontra összpontosítottak:
- Külső table-t regisztrálhat a meglévő adatokra a felhőobjektum-tárolóban.
- Közvetlenül hozzáférhet a külső tables adatfájljaihoz olvasási vagy írási célú külső rendszerekből.
- Az adatfájlok nem lettek törölve, ha a table véletlenül leesett.
- Mivel a külső tables
LOCATION
-et igényel, a gyártási adatok kisebb valószínűséggel kerülnek véletlenül a DBFS gyökérkönyvtárba.
Az Azure Databricks mostantól a Unity Catalog felügyelt megoldást tables javasolja a legtöbb táblázatos adattároláshoz. Lásd: Dolgozzon felügyelt tables-vel.
Views a Hive metaadattárában
A Hive metaadattárában az Azure Databricks által támogatott adatforrások által támogatott nézeteket deklarálhatja. A Unity Catalog-ban csak a Unity Catalog,tables és viewsellen lehet views-t deklarálni, beleértve a külföldi tables-öt, a materializált views-ot és a Delta Sharing tables-et.
A nem táblázatos adatforrásokkal való views deklarálási képesség miatt a Hive metaadattárában views váratlan vagy nem szándékos hozzáférést biztosíthat az adatokhoz, különösen, ha a felhasználói környezet más hozzáférési konfigurációival együtt használják.
Vegyük például a következőket:
- A table
my_table
a DBFS csatlakoztatási útvonalával/mnt/my_table
van meghatározva.- A DBFS csatlakoztatás credentials a munkaterületen van tárolva, így minden felhasználó alapértelmezés szerint elérheti ezt az elérési utat.
-
Table ACL-ek a felhasználók egy csoportjához való
my_table
hozzáférésének korlátozására szolgálnak.- Az örökölt table ACL-ek csak megosztott hozzáférési móddal vagy SQL-raktárakkal összefűzött számítási feladatokra vonatkoznak.
- A nézet
my_view
közvetlenül azon a felhőbeli URI-ján van definiálva, amely ugyanazokat az adatfájlokat'abfss://container-name@storage-account-name.dfs.core.windows.net/my_table'
készíti.- Az URI credentials a Spark-munkamenetben vagy számítási konfigurációban meghatározott hozzáférési szabályzatokra támaszkodik.
A nézet my_view
a következő tulajdonságokkal rendelkezik:
- Nem használja a DBFS-csatlakoztatást (credentials) a felhőobjektum-tároló csatlakoztatására
/mnt/my_table
-hez. - A számítási konfigurációktól függetlenül nem tartja tiszteletben a
my_table
table ACL-set. - Ehhez a számításhoz konfigurált adathozzáférési szabályzatra van szükség, amely olvasási hozzáférést biztosít.
'abfss://container-name@storage-account-name.dfs.core.windows.net/my_table'
Feljegyzés
Ez egy példa a váratlan viselkedésre, amivel találkozhat, de nem terjed ki az összes views által az örökölt Hive metatárolóban bemutatott lehetséges buktatóra. A Databricks a Unity Catalog használatát javasolja minden nézetdefinícióhoz.
Legacy Hive tables és HiveQL támogatás
Az Azure Databricks tartalmaz némi örökölt támogatást a Hive tables és a HiveQL funkcionalitásához. Ez a funkció az Azure Databricks korai verzióinak és az Eszközök Apache Hadoop-ökoszisztémájának maradványa. A Databricks nem javasolja a Hive tables vagy más Hive-funkciók használatát, mivel ez a funkció nincs optimalizálva, és bizonyos számítási konfigurációkban nincs támogatás.
Az alábbi cikkek az örökölt Hive-funkciókat ismertetik: