Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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 MANAGEDvagyUNSET 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 MANAGEDparancs egyDELTA_TRUNCATED_TRANSACTION_LOGhibával meghiúsul, ha a tábla tartalmazza aminReaderVersion=2,minWriterVersion=7, és atableFeatures={..., columnMapping}elemeket. Ellenőrizheti, hogy a tábla rendelkezik-e ezekkel a tulajdonságokkalDESCRIBE 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.
Nyissa meg a Katalóguskezelőben konvertálni kívánt táblát vagy sémát.
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.
A Miért migrál a Unity Catalog által felügyelt táblákba? párbeszédpanelen kattintson a Folytatás gombra.
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.
Kattintson a Konvertálási jegyzetfüzet létrehozása elemre.
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 jegyzetfüzetben tekintse át az ajánlott eljárásokat, és ellenőrizze, hogy megfelel-e az összes előfeltételnek.
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 HISTORYTRUNCATE UNIFORM HISTORYcsak 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:
- Ellenőrizze a Spark-illesztőprogramok naplóit, és állapítsa meg, hogy mely fájlok nem telepíthetők át.
- 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.
- Próbálkozzon újra a
ALTER TABLE ... SET MANAGEDparanccsal.
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:
- 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.
- 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 MANAGEDparancs 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;