A nem használt adatfájlok eltávolítása vákuummal
A prediktív optimalizálás automatikusan fut VACUUM
a Unity Catalog által felügyelt táblákon. A Databricks azt javasolja, hogy minden Unity Catalog által felügyelt tábla esetében engedélyezze a prediktív optimalizálást az adatkarbantartás egyszerűsítése és a tárolási költségek csökkentése érdekében. Lásd a Delta Lake prediktív optimalizálása című témakört.
A tábla parancsának futtatásával VACUUM
eltávolíthatja a megőrzési küszöbértéknél régebbi Delta-tábla által már nem hivatkozott adatfájlokat. A rendszeres futtatás VACUUM
a költségek és a megfelelőség szempontjából a következő szempontok miatt fontos:
- A nem használt adatfájlok törlése csökkenti a felhőbeli tárolási költségeket.
- Az eltávolított
VACUUM
adatfájlok olyan rekordokat tartalmazhatnak, amelyeket módosítottak vagy töröltek. Ezeknek a fájloknak a felhőbeli tárolóból való végleges eltávolítása biztosítja, hogy ezek a rekordok többé nem lesznek elérhetők.
Kikötések a vákuumhoz
Az adatfájlok alapértelmezett megőrzési küszöbértéke a futtatás VACUUM
után 7 nap. Ennek a viselkedésnek a módosításához tekintse meg az időutazási lekérdezések adatmegőrzésének konfigurálását.
VACUUM
az összes fájl eltávolítását követően üres könyvtárakat hagyhat hátra. A későbbi VACUUM
műveletek törlik ezeket az üres könyvtárakat.
A Databricks prediktív optimalizálást javasol a Delta-táblák automatikus futtatásához VACUUM
. Lásd a Delta Lake prediktív optimalizálása című témakört.
Egyes Delta Lake-funkciók metaadatfájlokkal jelölik meg az adatokat töröltként az adatfájlok újraírása helyett. Ezeket a törléseket véglegesítheti, és átírhatja REORG TABLE ... APPLY (PURGE)
az adatfájlokat. Lásd: Csak metaadatok törlése az adatok újraírásának kényszerítéséhez.
Fontos
- A Databricks Runtime 13.3 LTS-ben és újabb
VACUUM
verziókban a Unity Catalog által felügyelt táblákkal rendelkező sekély klónok szemantikája eltér a többi Delta-táblától. Lásd: Vacuum és Unity Catalog sekély klónok. VACUUM
Eltávolítja az összes fájlt a Delta Lake által nem felügyelt könyvtárakból, figyelmen kívül hagyva a kezdő vagy.
a_
. Ha további metaadatokat, például strukturált streamelési ellenőrzőpontokat tárol egy Delta táblakönyvtárban, használjon például_checkpoints
egy könyvtárnevet.- A változásadatcsatorna adatait a Delta Lake kezeli a címtárban, és eltávolítja a
_change_data
következővelVACUUM
: . Lásd: Delta Lake change data feed használata az Azure Databricksben. - A bloom szűrőindexek a
_delta_index
Delta Lake által felügyelt könyvtárat használják.VACUUM
törli a könyvtárban lévő fájlokat. Lásd: Bloom szűrőindexek.
- A változásadatcsatorna adatait a Delta Lake kezeli a címtárban, és eltávolítja a
- A megőrzési időnél régebbi táblaverziók lekérdezésének képessége a futtatás
VACUUM
után elveszik. - A naplófájlok automatikusan és aszinkron módon törlődnek az ellenőrzőpont-műveletek után, és azokra nem vonatkoznak
VACUUM
. Bár a naplófájlok alapértelmezett megőrzési ideje 30 nap, a táblán való futtatásVACUUM
eltávolítja az időutazáshoz szükséges adatfájlokat.
Feljegyzés
Ha engedélyezve van a lemez gyorsítótárazása, előfordulhat, hogy egy fürt olyan Parquet-fájlokból származó adatokat tartalmaz, amelyek a következővel VACUUM
lettek törölve: . Ezért előfordulhat, hogy lekérdezhető azoknak a korábbi táblaverzióknak az adatai, amelyek fájljait törölték. A fürt újraindítása eltávolítja a gyorsítótárazott adatokat. Lásd : A lemezgyorsítótár konfigurálása.
Példa a vákuum szintaxisára
VACUUM eventsTable -- vacuum files not required by versions older than the default retention period
VACUUM '/data/events' -- vacuum files in path-based table
VACUUM delta.`/data/events/`
VACUUM delta.`/data/events/` RETAIN 100 HOURS -- vacuum files not required by versions more than 100 hours old
VACUUM eventsTable DRY RUN -- do dry run to get the list of files to be deleted
A Spark SQL szintaxisának részleteiért lásd: VÁKUUM.
A Scala, a Java és a Python szintaxisának részleteit a Delta Lake API dokumentációjában találja.
Feljegyzés
RETAIN
A kulcsszóval megadhatja az adatfájl eltávolításának megállapításához használt küszöbértéket. A VACUUM
parancs ezzel a küszöbértékgel visszatekint a megadott időmennyiségre, és azonosítja az adott pillanatban a legújabb táblaverziót. A Delta megőrzi az adott táblaverzió és az összes újabb táblaverzió lekérdezéséhez szükséges összes adatfájlt. Ez a beállítás más táblatulajdonságokkal is együttműködik. Lásd: Adatmegőrzés konfigurálása időutazásos lekérdezésekhez.
Csak metaadat-törlések törlése az adatok újraírásának kényszerítéséhez
A REORG TABLE
parancs szintaxist biztosít az APPLY (PURGE)
adatok újraírásához a helyreállítható törlések alkalmazásához. A helyreállítható törlések nem írnak át adatokat és nem törölnek adatfájlokat, hanem metaadatfájlok használatával jelzik, hogy egyes adatértékek megváltoztak. Lásd: REORG TABLE.
A Helyreállítható törléseket a Delta Lake-ben létrehozó műveletek közé tartoznak a következők:
- Oszlopok elvetése engedélyezett oszlopleképezéssel.
- A törlési vektorokkal rendelkező sorok törlése.
- A Foton-kompatibilis fürtök adatmódosításai a törlési vektorok engedélyezésekor.
Ha engedélyezve van a helyreállítható törlés, előfordulhat, hogy a régi adatok fizikailag megmaradnak a tábla aktuális fájljaiban, még az adatok törlése vagy frissítése után is. Ha fizikailag el szeretné távolítani ezeket az adatokat a táblából, hajtsa végre az alábbi lépéseket:
- Futtassa az
REORG TABLE ... APPLY (PURGE)
parancsot. Ezt követően a régi adatok már nem szerepelnek a táblázat aktuális fájljaiban, de továbbra is megtalálhatók az időutazáshoz használt régebbi fájlokban. - Futtassa
VACUUM
a régebbi fájlok törlését.
REORG TABLE
a művelet befejeződése után létrehozza a tábla új verzióját. A tranzakció előtti előzmények összes táblaverziója régebbi adatfájlokra hivatkozik. Elméletileg ez hasonló a parancshoz, ahol az OPTIMIZE
adatfájlok újraírása akkor is történik, ha az aktuális táblaverzió adatai konzisztensek maradnak.
Fontos
Az adatfájlok csak akkor törlődnek, ha a fájlok a megőrzési VACUUM
időszaknak megfelelően lejártak. Ez azt jelenti, hogy a VACUUM
régebbi fájlok lejártát követő REORG
késéssel kell elvégezni. A megőrzési VACUUM
időtartam csökkenthető a szükséges várakozási idő lerövidítése érdekében, a megtartott előzmények maximális számának csökkentése érdekében.
Milyen méretű fürtre van szüksége a vákuumnak?
A megfelelő fürtméret VACUUM
kiválasztásához segít megérteni, hogy a művelet két fázisban történik:
- A feladat azzal kezdődik, hogy az összes elérhető végrehajtó csomópontot használja a forráskönyvtárban lévő fájlok párhuzamos listázásához. Ezt a listát összehasonlítjuk a Delta tranzakciónaplójában jelenleg hivatkozott összes fájllal a törölni kívánt fájlok azonosításához. Ez idő alatt a sofőr tétlenül ül.
- Az illesztő ezután a törölni kívánt fájlok törlési parancsaival foglalkozik. A fájltörlés csak illesztőprogram-művelet, ami azt jelenti, hogy minden művelet egyetlen csomóponton történik, miközben a feldolgozó csomópontok tétlenül ülnek.
A költségek és a teljesítmény optimalizálása érdekében a Databricks a következőket javasolja, különösen a hosszú ideig futó vákuumfeladatok esetében:
- Futtasson vákuumot egy 1-4 feldolgozóhoz készült automatikus méretezési készlettel rendelkező fürtön, ahol minden feldolgozó 8 maggal rendelkezik.
- Válasszon egy 8 és 32 mag közötti illesztőprogramot. Növelje az illesztőprogram méretét a memóriahiányos (OOM) hibák elkerülése érdekében.
Ha VACUUM
a műveletek rendszeresen törölnek több mint 10 ezer fájlt, vagy több mint 30 perc feldolgozási időt vesznek igénybe, érdemes lehet növelni az illesztőprogram méretét vagy a feldolgozók számát.
Ha úgy találja, hogy a lassulás az eltávolítandó fájlok azonosítása közben következik be, adjon hozzá további feldolgozó csomópontokat. Ha a lassulás a törlési parancsok futtatása közben következik be, próbálja meg növelni az illesztőprogram méretét.
Milyen gyakran kell vákuumot futtatni?
A Databricks azt javasolja, hogy rendszeresen fusson VACUUM
minden táblán a felhőbeli adattárolás többletköltségeinek csökkentése érdekében. A vákuum alapértelmezett megőrzési küszöbértéke 7 nap. A magasabb küszöbérték beállításával nagyobb előzményekhez férhet hozzá a táblához, de növeli a tárolt adatfájlok számát, és ennek következtében a felhőszolgáltató nagyobb tárolási költségekkel jár.
Miért nem lehet kis megőrzési küszöbértékkel rendelkező Delta-táblázatot porszívózni?
Figyelmeztetés
Javasoljuk, hogy legalább 7 napos megőrzési időközt állítson be, mert a régi pillanatképeket és a nem véglegesített fájlokat továbbra is használhatják az egyidejű olvasók vagy írók a táblához. Ha VACUUM
eltávolítja az aktív fájlokat, az egyidejű olvasók meghibásodhatnak, vagy rosszabb esetben a táblák megsérülhetnek, ha VACUUM
törli a még nem véglegesített fájlokat. Olyan időközt kell választania, amely hosszabb, mint a leghosszabb ideig futó egyidejű tranzakció, és azt a leghosszabb időtartamot, amelyig bármely stream késhet a tábla legutóbbi frissítéséhez képest.
A Delta Lake biztonsági ellenőrzéssel megakadályozza, hogy veszélyes VACUUM
parancsot futtasson. Ha biztos abban, hogy ezen a táblán nem hajtanak végre olyan műveleteket, amelyek a megadott megőrzési időköznél hosszabb időt vesznek igénybe, kikapcsolhatja ezt a biztonsági ellenőrzést a Spark konfigurációs tulajdonságának spark.databricks.delta.retentionDurationCheck.enabled
false
beállításával.
Naplózási információk
VACUUM
A Delta tranzakciónaplóba való véglegesítések naplózási információkat tartalmaznak. A naplózási eseményeket a következővel DESCRIBE HISTORY
kérdezheti le: .
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: