Megosztás a következőn keresztül:


Idegen tábla átalakítása felügyelt Unity Catalog-táblává

Fontos

Ez a funkció nyilvános előzetes verzióban érhető el, és jelenleg csak a résztvevő ügyfelek számára érhető el. Az előzetes verzióban való részvételhez töltse ki ezt az űrlapot. Ez a funkció csak a HMS és a Glue Federation használatával összevont idegen táblák konvertálását támogatja.

Ez a lap azt ismerteti, hogyan alakíthat SET MANAGED át egy idegen táblát felügyelt táblává.

SET MANAGED áttekintés

SET MANAGED funkcióval egy külső táblát Unity Catalog által kezelt táblává alakíthat az Azure Databricksben. SET MANAGED a következő előnyöket kínálja:

  • Táblaelőzmények megőrzése.
  • Tartsa meg ugyanazokat a táblakonfigurációkat, beleértve az azonos nevet, beállításokat, engedélyeket és nézeteket.
  • A prediktív optimalizálás előnyei. Ha egy táblát menedzselté alakít át, a prediktív optimalizálás értéke a séma vagy a katalógus szintjén örökli INHERIT beállítást. Alapértelmezés szerint ez jelenleg le van tiltva. A konvertált táblán a prediktív optimalizálás engedélyezéséhez futtassa a ALTER TABLE <table_name> ENABLE PREDICTIVE OPTIMIZATION, amely beállítja ENABLED-ra INHERIT helyett.

Előfeltételek

  • Adatformátum: Az idegen tábla adatformátumának Delta Lake-nek kell lennie. A Parquet egyszeri konvertálásának végrehajtásához tekintse meg a Konvertálás Delta Lake-vé című témakört.
  • Táblázat típusa: A HMS-táblatípusnak külső HMS-táblának kell lennie. A parancs meghiúsul, ha a tábla felügyelt HMS-tábla.
  • Futtatókörnyezet: Databricks Runtime 17.3 vagy újabb
  • Engedélyek: OWNER vagy MANAGE engedélyek a táblázatra és CREATE engedély a EXTERNAL LOCATION

Szemantika

Ha a Unity Catalog idegen tábláját Unity Catalog-ra szeretné konvertálni, futtassa a következő parancsot:

ALTER TABLE source_table SET MANAGED {MOVE | COPY}

Paraméterek

  • forrás_tábla

    Egy meglévő idegen tábla a Unity Catalogban. A külső táblák külső katalógus által kezelt adatokat és metaadatokat tartalmaznak. Konvertálás előtt, ha a forrástáblát a külső katalógusból eltávolítja, a rendszer a Unity Catalogban is eltávolítja az idegen táblát. A táblát kezelté alakítása után a forrástábla külső katalógusban való törlése nem érinti a Unity Catalog kezelt tábláját.

  • MOVE

    A táblát felügyeltsé alakítja, és letiltja a külső katalógus forrástáblához való hozzáférését.

    • A külső katalóguson vagy elérésiút-alapú hozzáférésen keresztüli hozzáférés a tábla konvertálása után meghiúsul. A táblázat összes olvasójának és írójának a Unity Catalog névterét kell használnia a hozzáféréshez.

    • Minden olvasónak és írónak névalapú hozzáférést kell használnia. Például:

      SELECT * FROM catalog_name.schema_name.table_name;
      
    • Az elérési útalapú hozzáférés nem támogatott, és a tábla konvertálása után meghiúsul. Például:

      SELECT * FROM delta.`protocol://path/to/table`;
      
    • A külső (nem Azure Databricks-) ügyfeleknek támogatniuk kell a Unity Catalog által felügyelt táblák olvasását. Lásd : Kompatibilitási mód.

    • Az Access Insights irányítópult használatával megállapíthatja, hogy a táblákhoz hozzáférő olvasók és írók Databricks Runtime vagy külső, nem Azure Databricks-ügyfelek-e.

    • Az Azure Databricks-olvasóknak és -íróknak a Databricks Runtime 15.4 LTS vagy újabb verzióját kell használniuk. Ha az olvasók vagy írók a Databricks Runtime 14.3 LTS vagy annál kisebb verziót használják, tekintsék meg az alternatív lehetőséget a Databricks Runtime 14.3 LTS vagy annál kisebb verziót használó olvasók és írók számára.

    • Leállás akkor fordulhat elő, amikor az olvasók vagy írók a táblához hozzáférnek az átalakítás során. További információ: Külső tábla átalakítása felügyelt Unity-katalógustáblává.

    • Ha a parancs megszakad, előfordulhat, hogy a tábla külső táblaként marad, mivel a felügyeltre való konvertálás nem fejeződött be. A parancs végrehajtásához futtassa újra a SET MANAGED parancsot a külső táblán.

    • A prediktív optimalizálás alapértelmezetten INHERIT beállítva van, hacsak nem konfigurálta manuálisan. Annak ellenőrzéséhez, hogy engedélyezve van-e a prediktív optimalizálás, olvassa el annak ellenőrzéséhez, hogy engedélyezve van-e a prediktív optimalizálás.

    • Visszaállítás: A tábla áttelepítésének visszaállításához és a külső katalógus forrástáblájához való hozzáférés helyreállításához futtassa a UNSET MANAGED parancsot. A tábla a parancs futtatása után külső táblává válik. Ha vissza szeretné adni a táblát egy idegen táblának, ejtse el a táblát, és a következő katalógusszinkronizálás során újra összevonja azt idegenként.

      ALTER TABLE catalog.schema.my_managed_table UNSET MANAGED
      

      Figyelmeztetés

      A táblázat elvetése előtt futtatnia UNSET MANAGED kell. A tábla eldobása a UNSET MANAGED lefuttatása előtt rossz állapotban hagyhatja a rendszert, és adatvesztést vagy következetlenségeket okozhat.

    • Ha visszagördül, a konvertálás és a visszaállítás közötti külső helyre tett véglegesítések verzió szerint időzíthetők, időbélyegek szerint azonban nem. A visszaállítás után hét nappal a rendszer törli a felügyelt helyen lévő adatokat. A Databricks Runtime 15.4 LTS-es vagy újabb verzióinak olvasói és írói számára a konvertálás után, de a visszaállítás előtt végrehajtott véglegesítések táblaelőzményei verzió szerint, időbélyeg nélkül időzíthetők.

    • A táblaátalakítás után a következőt kell elvégeznie:

      • Indítsa újra a streamelési feladatokat (olvasási vagy írási) az idegen táblával
      • Győződjön meg arról, hogy az olvasók és az írók a kezelt táblával dolgoznak.
  • COPY

    A táblát felügyelté alakítja anélkül, hogy módosítaná vagy letiltaná a külső katalógus forrástáblához való hozzáférését.

    • A felügyelté való átalakítás során a forrástáblából származó adatok át lesznek másolva a felügyelt tárolási helyhez, amely a külső táblához van rendelve, így két másolat jön létre: az új felügyelt tábla és a forrástábla a külső katalógusban.
    • Az MOVE használatával ellentétben, amelynél az olvasási és írási műveletek sikertelenek, COPY használata során ön a felelős az olvasások és írások külső katalógusban található forrástáblán való megfelelő letiltásáért, valamint annak biztosításáért, hogy a számítási feladatok átkerüljenek az új katalógusba.
    • Visszaállítás: A tábla áttelepítésének visszaállításához nem kell futtatnia a UNSET MANAGED parancsot, mivel a forrástábla nem szakadt meg a külső katalógusban. Távolítsa el a táblát, és a következő katalógusszinkronizálás során újrakapcsolják külföldiként.

Átalakítás ellenőrzése

Ellenőrizheti, hogy a külső tábla felügyelt táblává lett-e konvertálva:

DESCRIBE EXTENDED catalog_name.schema_name.table_name

Ha a táblázat konvertálva lett, a Type a col_name alatt MANAGED -ként jelenik meg a data_type alatt.

Ismert korlátozások

Az idegen táblák felügyelt táblákká konvertálása a következő korlátozásokkal rendelkezik:

  • Streamelési ügyfelek: Az átalakítás után újra kell indítania a streamelési feladatokat.

  • Több felhőrégió: Ha a Unity Catalog metaadattárának, katalógusának vagy sémájának alapértelmezett felügyelt helye a konvertált idegen tábla tárolási helyétől eltérő felhőrégióban található, további régiók közötti adatátviteli költségek merülhetnek fel. A felhőszolgáltató ezeket a díjakat az Azure Databricks vezérlésén kívül számítja fel. A séma, katalógus és metaadattár helyének ellenőrzéséhez használja az alábbi parancsokat:

    -- Check schema location
    DESCRIBE SCHEMA EXTENDED catalog_name.schema_name;
    
    -- Check catalog location
    DESCRIBE CATALOG EXTENDED catalog_name;
    
    -- Check metastore location
    DESCRIBE METASTORE;
    

GYIK

Létrehozhatok táblákat, és átalakíthatok táblákat egy idegen katalógusban?

Igen, külső vagy felügyelt táblákat is létrehozhat egy idegen katalógusban. A viselkedés a séma konfigurációjától függ:

  • Ragasztó- vagy eHMS-sémákhoz, illetve a Unity Katalógusban beállított felügyelt helyű sémákhoz: Ha CREATE TABLE foreign_catalog.schema.table-t futtat, ez létrehoz egy felügyelt vagy külső táblát a Unity Katalógusban. A rendszer nem küldi le vagy szinkronizálja a táblát a külső katalógusba.
  • Belső Hive-metaadattár-kapcsolatokból származó sémák esetén: Ha egy táblát próbál létrehozni egy másik sémában, akkor is létrehoz egy táblát az adott idegen sémában, valamint egy táblát a hive_metastore helyen.
  • Régi Hive-munkaterület metaadattára: Mivel olvasási és írási összevonásról van szó, ha egy táblát hoz létre a külső katalógusban, a belső Hive metaadattárban is létrehoz egy táblát.

Mi a teendő, ha a külső táblák DBFS-alapúak?

DBFS-alapú tábla konvertálásakor a DBFS-elérési út aktuális leképezését a felhő elérési útjának külső tábla felhőbeli elérési útjaként tároljuk.

Átalakíthatom a sémát vagy a katalógust?

A sémákban lévő táblákon végigvezetve egyenként konvertálhat, vagy a Discoverx Labs projekt segítségével egyszerre teljes sémákat vagy katalógusokat konvertálhat:

df = (dx.from_tables("prod.*.*")
.with_sql("ALTER TABLE {full_table_name} SET MANAGED;")
.apply())