Adatbázis-objektumok az örökölt Hive-metaadattárban

Az Azure Databricks dokumentációja az adatobjektumok Unity Catalog használatával történő használatára összpontosít, de az utasítások nagy része 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 azt ismerteti, hogy a Hive-metaadattár-objektumok használata hol különbözik a Unity Catalog-objektumoktól. Emellett a váratlan viselkedéseket is ismerteti.

A Databricks azt javasolja, hogy az összes adatot migrálja az örökölt Hive-metaadattárból a Unity Catalogba. Lásd: Hive-táblák és nézetek frissítése Unity-katalógusra.

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 Catalogot használja az összes adatszabályozáshoz. Lásd : Az örökölt Hive-metaadattár használata a Unity Catalog mellett.

A Unity Catalog munkaterületének engedélyezése nem csökkenti a Hive metaadattárban már regisztrált adatok használatát. Az örökölt Hive-metaadattárban regisztrált összes adatobjektum megjelenik a hive_metastore katalógus Unity Catalog-felületei között. Egy hibrid Hive-metaadattár- és Unity Catalog-munkaterület hasznos modell lehet egy régóta használt Hive-metaadattár-munkaterületről való átálláshoz. 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 táblahozzáférés-vezérlést (tábla ACL-eket) használ az adatbázis-objektumokhoz való hozzáférés kezeléséhez. A táblahozzáférés szabályozása továbbra is támogatott, ha standard hozzáférési módban használja a számítást. Lásd: Hive metaadattár tábla hozzáférés-ellenőrzése (régi).

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ése (régi).

Megjegyzés

Ahol ez a cikk a Hive metaadattár adathozzáférés-vezérlésére hivatkozik, az örökölt táblahozzáférés-vezérlésre hivatkozik.

Mi a hive_metastore katalógus?

A Unity Cataloghoz engedélyezett munkaterületeken a Hive metaadattár összes sémája a katalógus gyermekeiként jelenik meg a hive_metastore Unity Catalog háromszintű névterében. A Hive metaadattár valójában nem használ katalógusokat, és ez a szerkezet belépési pontot biztosít a unitykatalógus felhasználói számára az örökölt Hive metaadattár tábláihoz. Az örökölt Hive metaadattár tábláinak lekérdezéséhez használja az alábbi szintaxist:

SELECT * FROM hive_metastore.schema_name.table_name

Megjegyzés

A Unity Catalogot használó munkaterületeken igény szerint beállíthatja a hive_metastore katalógust a munkaterület alapértelmezettjeként. Lásd: Alapértelmezett katalógus kezelése.

Sémák a Hive metaadattárában

Az örökölt Hive-metaadattárban a séma az adatobjektum-hierarchia legmagasabb szintje.

Van néhány fontos különbség a Unity Catalog és a Hive metaadattár között, beleértve a következőket:

  • Nem hozhat létre sémákat a Hive metaadattárban a 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 metastore lehetővé teszi, hogy egy séma létrehozásakor LOCATION legyen deklarálva. Ez a Unity Catalog által felügyelt tárolóhelyekhez hasonlóan működik, 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 sémát lé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 sémát a Hive-metaadattárban, a rendszer a sémahelyen lévő összes fájlt rekurzív módon törli, függetlenül a tábla típusától (felügyelt vagy külső).

A véletlen adatvesztés elkerülése érdekében a Databricks a következőket javasolja a Hive metaadattár sémahelyeinek használatakor:

  • Ne rendeljen hozzá olyan sémahelyet, amely már tartalmaz adatokat.
  • Ne hozzon létre külső táblát sémahelyen.
  • Ne ossza meg a helyet több séma között.
  • Ne rendeljen hozzá egy másik sémahelyet átfedő sémahelyet. Más szóval ne használjon olyan elérési utat, amely egy másik sémahely gyermekének számít.
  • Ne rendeljen hozzá olyan sémahelyet, amely átfedésben van egy külső tábla helyével.

Felügyelt táblák a Hive metaadattárában

A Hive metaadattár felügyelt táblái nem rendelkeznek a Felügyelt táblák teljesítménybeli előnyeinek egyikével sem a Unity Catalogban. A Unity Catalog által felügyelt táblákhoz hasonlóan a Hive metaadattár által felügyelt táblák is alapértelmezés szerint a Delta Lake-t használják. A Hive-metaadattárban azonban a Unity Catalogtól eltérően felügyelt táblát is létrehozhat az Azure Databricks által támogatott egyéb adatformátumok többségével.

A Hive metaadattárában lévő felügyelt táblák mindig a tároló séma tárolási helyén jönnek létre. A felügyelt táblák 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 táblák adatelrendezését, mint a Unity Catalog. Ha elvet egy felügyelt táblát a Hive metaadattárában, az összes mögöttes adatfájl azonnal törlődik. A Unity Catalogban viszont egy felügyelt táblát 7 napig használhat UNDROP , és az adatok 30 napon belül véglegesen törlődnek.

Az elérési útalapú hozzáféréssel adatokat olvashat vagy írhat a Hive metaadattár felügyelt tábláiban, míg a Unity-katalógusban nem, és nem is kell.

Külső táblák a Hive metaadattárában

Az Azure Databricksben a Unity Catalog bevezetése előtt létrehozott táblák többsége külső táblákként lett konfigurálva a Hive metaadattárban. A külső táblákat előnyben részesítő régi javaslatok általában néhány fő szempontra összpontosítottak:

  • Regisztrálhat egy külső táblát a meglévő adatokra a felhőobjektum-tárolóban.
  • A külső táblákban lévő adatfájlokat közvetlenül külső rendszerekből érheti el olvasási vagy írási célokra.
  • Az adatfájlok nem lettek törölve, ha a tábla véletlenül el lett dobva.
  • Mivel a külső táblákhoz szükség van egy LOCATION, az éles adatok kisebb valószínűséggel kerülnek véletlenül a DBFS-gyökérbe.

Az Azure Databricks mostantól a Unity Catalog által felügyelt táblákat javasolja a legtöbb táblázatos adattároláshoz. Lásd a Unity Catalog által felügyelt táblákat a Delta Lake-hez és az Apache Iceberghez.

Nézetek 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 Catalogban csak a Unity Catalog táblái és nézetei alapján deklarálhat nézeteket, beleértve az idegen táblákat, a materializált nézeteket és az OpenSharing táblákat.

Mivel a nézeteket nem táblázatos adatforrások ellen lehet bejelenteni, a Hive metastore-ban elérhető nézetek váratlan vagy nem szándékos hozzáférést biztosíthatnak adatokhoz más felhasználói konfigurációkkal együtt.

Vegyük például a következőket:

  • A tábla my_table a DBFS csatlakoztatási útvonalával /mnt/my_tablevan definiálva.
    • A DBFS csatlakoztatási hitelesítő adatai a munkaterületen vannak tárolva, így alapértelmezés szerint minden felhasználó hozzáfér ehhez az elérési úthoz.
  • A tábla ACL-ek a felhasználók egy csoportjához my_table való hozzáférés korlátozására szolgálnak.
    • A régi tábla ACL-ek csak olyan számítási rendszereken érvényesek, amelyeket szabványos hozzáférési móddal vagy SQL raktárral konfigurálnak.
  • A nézet my_view közvetlenül ahhoz a felhőbeli URI-hoz van definiálva, amely ugyanazokat az adatfájlokat 'abfss://container-name@storage-account-name.dfs.core.windows.net/my_table' szolgálja ki.
    • Az URI hitelesítő adatai a Spark-munkamenetben vagy számítási konfigurációban meghatározott hozzáférési szabályzatokra támaszkodnak.

A nézet my_view a következő tulajdonságokkal rendelkezik:

  • Nem használja a felhőobjektum-tároló /mnt/my_tablecsatlakoztatásához használt DBFS-csatlakoztatási hitelesítő adatokat.
  • A számítási konfigurációktól függetlenül nem tartja tiszteletben a tábla ACL-jeit my_table.
  • 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'

Megjegyzés

Ez csak egy példa egy olyan váratlan működésre, amellyel találkozhatsz, és nem ad teljes körű képet a régi Hive-metastore nézetei által jelentett összes lehetséges buktatóról. A Databricks a Unity Catalog használatát javasolja minden nézetdefinícióhoz.

Örökölt Hive-táblák és HiveQL-támogatás

Az Azure Databricks bizonyos elavult támogatást nyújt a Hive-táblákhoz és a HiveQL-funkcionalitáshoz. 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-táblák 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: