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


Külső tábla átalakítása felügyelt Unity Catalog-táblává

Ez a lap azt ismerteti, hogyan konvertálhat külső táblázatot Unity Catalog által felügyelt táblává az Azure Databricksben a parancs vagy a ALTER TABLE ... SET MANAGED Katalóguskezelő használatával.

SET MANAGED Áttekintés

Használja a SET MANAGED-t egy külső táblának Unity Catalog által felügyelt táblává való konvertálásához. Bár a konvertáláshoz (CTAS) is használható CREATE TABLE AS SELECT , a Databricks SET MANAGED a következő előnyöket javasolja:

  • Minimalizálja az olvasó és az író állásidejét.
  • Kezeli az egyidejű írásokat az átalakítás során.
  • Megtartja a táblaelőzményeket.
  • Megtartja ugyanazokat a táblakonfigurációkat, például a nevet, a beállításokat, az engedélyeket és a nézeteket.
  • Támogatja a konvertált felügyelt tábla külső táblává való visszaállítását.

Prerequisites

  • A külső táblák minden olvasójának és írójá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úsulhat.

  • A Databricks Runtime 17.0-s vagy újabb verzióját vagy kiszolgáló nélküli számítást kell használnia a használatához SET MANAGED vagy UNSET MANAGED.

  • Ahhoz, hogy a Unity Catalog táblákat, amelyeknél már engedélyezve vannak az Iceberg olvasások (UniForm), átalakítsa, a Databricks Runtime 17.2 vagy újabb verzióját kell használnia, vagy kiszolgáló nélküli számítást kell használni TRUNCATE UNIFORM HISTORY.

  • 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 14.3 LTS-t vagy az alatti verziót használják, tekintse meg a Databricks Runtime 14.3 LTS vagy alatti verziókhoz való alternatív lehetőséget az olvasók és írók számára.

  • A SET MANAGED parancs egy DELTA_TRUNCATED_TRANSACTION_LOG hibával meghiúsul, ha a tábla tartalmazza a minReaderVersion=2, minWriterVersion=7, és a tableFeatures={..., columnMapping} elemeket. Ellenőrizheti, hogy a tábla rendelkezik-e ezekkel a tulajdonságokkal DESCRIBE DETAIL.

  • A külső (nem Databricks-) ügyfeleknek támogatniuk kell a Unity Catalog által felügyelt táblák olvasását. Lásd: Táblázatok olvasása Delta-ügyfelekkel.

    • Az Access Insights irányítópultján ellenőrizheti, hogy a táblákhoz hozzáférő olvasók és írók a Databricks Runtime vagy külső, nem Databricks-e.

Important

Az ütközések elkerülése érdekében szakítsa meg a táblán működő meglévő OPTIMIZE parancsfeladatokat (folyékony fürtözés, tömörítés, ZORDER) és ne ütemezzen feladatokat, miközben a külső táblákat felügyelt táblákká konvertálja.

Konvertálás külsőről felügyelt táblára

Important

A külső táblák Catalog Explorerrel történő konvertálása bétaverzióban van.

Katalóguskezelő

A Catalog Explorer használatával történő konvertáláskor a rendszer automatikusan névalapú hozzáférést használ. Egyszerre egy vagy több külső táblát alakíthat át egy sémában.

  1. Nyissa meg a Katalóguskezelőben konvertálni kívánt táblát vagy sémát.

  2. A Tábla ismertetése (táblázat részletei lap) vagy a Séma részletei lap alatt kattintson az Optimalizálások felfedezése gombra.

  3. A Miért migrál a Unity Catalog által felügyelt táblákba? párbeszédpanelen kattintson a Folytatás gombra.

    Miért szükséges migrálni a Unity Catalog által kezelt táblákra című párbeszédpanel a Folytatás gombbal

  4. Jelölje ki a konvertálni kívánt külső táblákat. Ha megnyitotta a párbeszédpanelt egy táblázatrészletoldalról, a táblázat előre ki van jelölve. A keresősávon további táblákat kereshet. A felügyelt táblák nem választhatók ki.

    Táblakijelölési képernyő, amelyen egy előre kijelölt külső tábla és egy nem elérhető felügyelt tábla látható

  5. Kattintson a Konvertálási jegyzetfüzet létrehozása elemre.

  6. Ha szeretné, adja meg a jegyzetfüzet nevét. Alapértelmezés szerint a jegyzetfüzet a saját mappájába lesz mentve. A Tallózás gombra kattintva másik helyre mentheti.

    A névmezőt és a Tallózás lehetőséget megjelenítő konvertálási jegyzetfüzet létrehozása párbeszédpanel

  7. A jegyzetfüzetben tekintse át az ajánlott eljárásokat, és ellenőrizze, hogy megfelel-e az összes előfeltételnek.

  8. Futtassa a SET FELÜGYELT lekérdezések cellát.

A cella futtatása után a táblázat típusa FELÜGYELT helyett KÜLSŐ értékként jelenik meg a Catalog Explorerben. Frissítse a lapot, ha az állapot nem frissül azonnal.

SQL

Attól függően, hogy a külső táblában engedélyezve van-e az Apache Iceberg olvasása (UniForm), futtassa az alábbi parancsok egyikét. Lásd , hogy engedélyezve van-e az Iceberg olvasása (UniForm), hogy ellenőrizze, vajon a táblában engedélyezett-e az Apache Iceberg olvasás (UniForm).

  • Az Apache Iceberg olvasási (UniForm) funkcióval nem rendelkező külső Unity Catalog-táblák esetében:

    ALTER TABLE catalog.schema.my_external_table SET MANAGED;
    

    Az átalakítás után kompatibilitási problémák nélkül engedélyezheti az Iceberg-olvasásokat a felügyelt táblán.

  • A Unity Catalog külső tábláiban, ahol az Apache Iceberg olvasás (UniForm) már engedélyezve van:

    ALTER TABLE catalog.schema.my_external_table SET MANAGED TRUNCATE UNIFORM HISTORY;
    

    A táblázat optimális teljesítményének és kompatibilitásának fenntartása érdekében.TRUNCATE UNIFORM HISTORY TRUNCATE UNIFORM HISTORY csak az UniForm Iceberg előzményeit csonkolja, és nem távolítja el a Delta-előzményeket. Ez a parancs rövid olvasási és írási leállást eredményez az Iceberg számára a csonkolás után.

Ha a parancs az adatok másolása közben megszakad, indítsa újra, és onnan folytatódik, ahol abbahagyta.

Warning

A Databricks azt javasolja, hogy ne futtasson egyszerre több SET MANAGED parancsot ugyanazon a táblán, ami inkonzisztens táblaállapothoz vezethet.

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) a külső táblával, hogy elkerülje az előző helyre való olvasást vagy írást. Állítsa le az aktuális feladatot, és indítsa el az új feladatot ugyanazzal a konfigurációval.
  • Ellenőrizze, hogy az olvasók és az írók dolgoznak-e a felügyelt táblával.

A prediktív optimalizálás automatikusan engedélyezve lesz az átalakítás után, hacsak nem tiltotta le manuálisan. Lásd : Annak ellenőrzése, hogy engedélyezve van-e a prediktív optimalizálás.

Ha engedélyezve van a prediktív optimalizálás, az Azure Databricks 14 nap után automatikusan törli az adatokat a Unity-katalógus külső helyén. Ha a prediktív optimalizálás le van tiltva, futtassa VACUUM (a Databricks Runtime 17.0-s vagy újabb verzióját vagy kiszolgáló nélküli számítást igényel) az újonnan konvertált felügyelt táblán 14 nap után.

VACUUM my_converted_table

Note

Bizonyos esetekben előfordulhat, hogy a Unity-katalógus külső helyén lévő adatok 14 nap elteltével sem törlődnek, még akkor sem, ha engedélyezve van a prediktív optimalizálás – például ha a felügyelt táblát nem használják gyakran, vagy nagyon kicsi. Ezekben az esetekben futtassa VACUUM manuálisan 14 nap után az előző adatok eltávolításához.

Az Azure Databricks csak a külső helyen lévő adatokat törli. A Delta tranzakciós napló és a Unity-táblakatalógus hivatkozása megőrződik.

Átalakítás ellenőrzése

Katalóguskezelő

Frissítse a lapot. A Részletek lapon, a Tábláról szakaszban, a tábla TípusaFelügyeltként jelenik meg.

SQL

Futtassa a következő parancsot annak ellenőrzéséhez, hogy a külső tábla felügyelt táblává lett konvertálva:

DESCRIBE EXTENDED catalog_name.schema_name.table_name

A táblázat Type a következőképpen jelenik meg MANAGED: .

Alternatív lehetőség az olvasók és írók számára a Databricks Runtime 14.3 LTS-en vagy az alatt

A Databricks azt javasolja, hogy frissítsék az összes olvasót és írót a Databricks Runtime 15.4 LTS vagy újabb verziójára, így kihasználhatják a SET MANAGED előnyét, beleértve a táblaelőzmények megőrzésének lehetőségét.

Továbbra is használhatja SET MANAGED , ha a Databricks Runtime 14.3-on vagy az alatta vannak olvasói vagy írói. A felügyelt táblává alakítás után azonban nem lehet időbélyeg alapján visszautazni a korábbi véglegesítésekhez – csak verzió szerint. Ha a 14 napos időablakban visszaállítja egy külső táblát, akkor újra engedélyezetté válik az időutazás az átalakítás előtt végrehajtott történelmi véglegesítésekhez.

A Unity Catalog külső táblába időbélyeg alapján történő visszagörgetése minden esetben nem működik a konvertált Unity Catalog felügyelt táblában a konvertálás és a visszaállítás között végrehajtott véglegesítések esetében.

A Databricks Runtime 15.4 LTS-es vagy újabb verziójával való átalakítás után a táblába való íráshoz el kell dobni a inCommitTimestamp funkciót:

ALTER TABLE <table_name> DROP FEATURE inCommitTimestamp;

Konverziós hibák elhárítása

Ez a szakasz a külső táblák Unity Catalog által felügyelt táblákká alakításakor és megoldásuk módjában jelentkező gyakori problémákat ismerteti.

Databricks Runtime verziók konzisztenciája

Ne futtassa vagy próbálkozzon újra ugyanazon tábla konvertálásával különböző Databricks Runtime-verziók használatával. A metaadatok különböző módon szerializálhatók a különböző verziókban, ami hibát okoz VERSIONED_CLONE_INTERNAL_ERROR.EXISTING_FILE_VALIDATION_FAILED . Ha az átalakítás sikertelen, mindig próbálkozzon újra ugyanazzal a Databricks Runtime-verzióval.

Klaszter leállítás konverzió közben

Ha a fürt leáll az átalakítás során, a parancs DELTA_ALTER_TABLE_SET_MANAGED_INTERNAL_ERROR hibát eredményezhet. A konvertálás folytatásához próbálkozzon újra a paranccsal.

Sérült külső tábla

Ha a külső tábla már sérült (például nem érvényes táblaállapot), az átalakítás meghiúsulhat olyan hibákkal, mint DELTA_TRUNCATED_TRANSACTION_LOGpéldául az , DELTA_TXN_LOG_FAILED_INTEGRITYvagy DELTA_STATE_RECOVER_ERRORS. Az átalakítás megkísérlése előtt ellenőrizze, hogy futtathat-e alapműveleteket a külső táblán, például DESCRIBE DETAIL.

Fájlérvényesítési hiba

A SET MANAGED parancs ellenőrzi, hogy a rendszer a tábla legújabb pillanatképében szereplő összes fájlt átmásolja-e az új felügyelt tábla helyére. Ha valamelyik fájl hiányzik, a parancs hibaüzenettel DELTA_ALTER_TABLE_SET_MANAGED_FAILED.FILE_VALIDATION_FAILED meghiúsul.

A probléma megoldása:

  1. Ellenőrizze a Spark-illesztőprogramok naplóit, és állapítsa meg, hogy mely fájlok nem telepíthetők át.
  2. Ellenőrizze, hogy ezek a fájlok a forrás külső tábla helyén találhatók-e, és elérhetők-e.
  3. Próbálkozzon újra a ALTER TABLE ... SET MANAGED paranccsal.

Ha a probléma továbbra is fennáll, forduljon a Databricks ügyfélszolgálatához.

Visszagörgetés egy külső táblára

Important

A UNSET MANAGED parancshoz a Databricks Runtime 17.0-s vagy újabb verziójára vagy kiszolgáló nélküli számításra van szükség.

Miután egy külső táblát felügyelt táblává alakított át, 14 napon belül visszatérhet.

Visszagörgetéskor a rendszer frissíti a tábla metaadatait, hogy ismét az eredeti külső helyre mutasson. Az átalakítás után a felügyelt helyre írt összes adat megőrzésre kerül. Az átalakítás és a visszaállítás között a felügyelt helyen végrehajtott véglegesítések továbbra is időutazhatók verzió alapján, de nem időbélyeg szerint.

A visszaállítás után hét nappal az Azure Databricks automatikusan törli az adatokat a felügyelt helyen.

Ha vissza szeretne állítani egy külső táblát, hajtson végre a következő parancsot:

ALTER TABLE catalog.schema.my_managed_table UNSET MANAGED;

Ha a visszaállítási parancs megszakad, futtassa újra, hogy újra próbálkozzon.

A streamelési feladatokat a visszaállítás után is újra kell indítania, hasonlóan a konvertáláshoz.

Visszaállítás ellenőrzése

Futtassa a következő parancsot annak ellenőrzéséhez, hogy a konvertálás vissza lett-e állítva:

DESCRIBE EXTENDED catalog_name.schema_name.table_name

A táblázat Type a következőképpen jelenik meg EXTERNAL: .

Ha a katalóguskezelőben tekinti meg a táblázatot, frissítse a lapot. A Részletek lapon, az A tábla névjegye alatt a tábla típusa így jelenik meg: EXTERNAL.

Állásidő és adatmásolási idő

A SET MANAGED parancs minimalizálja vagy kiküszöböli az állásidőt az olyan alternatív módszerekhez képest, mint a DEEP CLONE. Az átalakítási folyamat kétlépéses megközelítést alkalmaz:

  1. Kezdeti adatmásolás (nincs állásidő): A rendszer a táblaadatokat és a Delta tranzakciónaplót a külső helyről a felügyelt helyre másolja. Az olvasók és írók továbbra is normálisan működnek, és nincs hatással a folyamatban lévő műveletekre.
  2. Váltás felügyelt helyre (rövid állásidő): Az első lépés során a külső helyre tett véglegesítések átkerülnek a felügyelt helyre, és a tábla metaadatai frissülnek az új felügyelt hely regisztrálásához. Ebben a lépésben a külső helyre történő írások ideiglenesen le lesznek tiltva, ami írási leállást eredményez. A Databricks Runtime 16.1 vagy újabb verziójának olvasói nem tapasztalnak állásidőt; a Databricks Runtime 15.4-ben az olvasók állásidőt tapasztalhatnak.

Becsült állásidő:

Táblázat mérete Javasolt fürtméret Az adatmásolás ideje Olvasói és írói állásidő
100 GB vagy kevesebb 32 magos / X-Large SQL adattárház ~6 perc vagy kevesebb ~1-2 perc vagy kevesebb
1 TB 64 magos / 2X-Large SQL-tároló ~30 perc ~1-2 perc
10 terabájt 256 magos / 4X extra nagy SQL tároló ~1,5 óra ~1-5 perc

A becslések 0,5–2 GB/processzormag/perc átviteli sebességet feltételeznek.

Note

Az állásidő olyan tényezőktől függően változhat, mint a fájlméret, a fájlok száma és a véglegesítések száma.

Ismert korlátozások

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

  • Táblaelőzmények korlátozásai a visszaállítás után: A konvertálás után, de a visszaállítás előtt végrehajtott véglegesítések táblázatelőzményei verzió szerint időzíthetők, időbélyeg alapján azonban nem.

  • A deltamegosztás korlátozásai: A SET MANAGED parancs nem teljes mértékben kompatibilis a Delta Sharing szolgáltatással. A nyílt Delta-megosztás a várt módon működik, de a Databricks-to-Databricks megosztás nem frissíti automatikusan a címzett táblázat kezelt helyét. A címzett a régi helyről olvas tovább, amíg a tábla újra megosztásra kerül. A tábla újraosztása:

    ALTER SHARE <share_name> REMOVE TABLE <table_name>;
    ALTER SHARE <share_name> ADD TABLE <table_name> AS <table_share_name> WITH HISTORY;
    
  • Több felhőrégió: Ha a Unity Catalog-metaadattár, -katalógus vagy -séma alapértelmezett felügyelt helye a külső 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 a Databricks-vezérlőn kívül számítja fel.

    A séma, katalógus és metaadattár helyének ellenőrzéséhez:

    DESC SCHEMA EXTENDED <catalog_name>.<schema_name>;
    
    DESC CATALOG EXTENDED <catalog_name>;
    
    SELECT * FROM system.information_schema.metastores;