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.
A OPTIMIZE parancs újraírja az adatfájlokat a Delta Lake- és Apache Iceberg-táblák adatelrendezésének javítása érdekében. Ha a folyékony fürtözés engedélyezve van, írja át az adatfájlokat az OPTIMIZE adatok folyékony fürtözési kulcsokkal való csoportosításához. A partíciókkal rendelkező táblák esetében a fájl tömörítése és az adatelrendezés a partíciókon belül történik.
A prediktív optimalizálás automatikusan fut OPTIMIZE a Unity Catalog által felügyelt táblákon. A Databricks azt javasolja, hogy engedélyezze az összes Unity Catalog által felügyelt tábla prediktív optimalizálását az adatkarbantartás egyszerűsítése és a tárolási költségek csökkentése érdekében. Lásd: A Unity Catalog által felügyelt táblák prediktív optimalizálása.
A liquid clustering nélküli Delta Lake-táblák opcionálisan tartalmazhatnak ZORDER BY záradékot, amely javítja az adatok klaszterezését az újraírás során. Az Apache Iceberg-táblák klaszterezési és rendezési stratégiákat használnak ZORDER helyett. A Databricks azt javasolja, hogy partíciók helyett ZORDER folyékony fürtözést használjon, vagy más adatelrendezési eljárásokat.
Lásd a(z) OPTIMIZE.
Important
A Databricks Runtime 16.0-s és újabb verziókban a OPTIMIZE FULL használatával kényszerítheti az újrakonfigurálást olyan táblák esetében, amelyeken engedélyezve van a folyékony fürtözés. Lásd: Kényszerített újracsoportosítás.
Szintaxisbeli példák
A OPTIMIZE parancs futtatásával aktiválja a tömörítést.
SQL
OPTIMIZE table_name
Python
A Python DeltaTable API Delta Lake-specifikus.
from delta.tables import *
deltaTable = DeltaTable.forName(spark, "table_name")
deltaTable.optimize().executeCompaction()
Scala
A DeltaTable API Scala nyelven kifejezetten a Delta Lake-hez készült.
import io.delta.tables._
val deltaTable = DeltaTable.forName(spark, "table_name")
deltaTable.optimize().executeCompaction()
Ha nagy mennyiségű adattal rendelkezik, és csak egy részhalmazt szeretne optimalizálni, adjon meg egy opcionális partíció-predikátumot a következő használatával WHERE:
SQL
OPTIMIZE table_name WHERE date >= '2022-11-18'
Python
A Python DeltaTable API Delta Lake-specifikus.
from delta.tables import *
deltaTable = DeltaTable.forName(spark, "table_name")
deltaTable.optimize().where("date='2021-11-18'").executeCompaction()
Scala
A DeltaTable API Scala nyelven kifejezetten a Delta Lake-hez készült.
import io.delta.tables._
val deltaTable = DeltaTable.forName(spark, "table_name")
deltaTable.optimize().where("date='2021-11-18'").executeCompaction()
A dobozcsomagoláshoz vegye figyelembe a következő információkat:
- A dobozcsomagolás optimalizálása idempotens, ami azt jelenti, hogy ha kétszer fut ugyanazon az adatkészleten, a második futtatásnak nincs hatása.
- A dobozos csomagolás célja, hogy egyenletesen kiegyensúlyozott adatfájlokat állítsunk elő a tárolóban lévő méretükhöz képest, de nem feltétlenül a fájlonkénti kukák száma alapján. A két intézkedés azonban gyakran korrelál.
A Delta Lake-táblák olvasói pillanatkép-elkülönítést használnak, ami azt jelenti, hogy a rendszer nem szakítja meg őket, ha OPTIMIZE eltávolítja a felesleges fájlokat a tranzakciónaplóból. Mivel OPTIMIZE nem módosítja az adatokat a táblában, a beolvasás előtt és után OPTIMIZE ugyanazokkal az eredményekkel jár.
OPTIMIZE A streamelési forrásként használt táblán végzett műveletek nem befolyásolják a jelenlegi vagy jövőbeli streameket, amelyek forrásként használják ezt a táblát.
OPTIMIZE Visszaadja az eltávolított fájlok és a művelet által hozzáadott fájlok fájlstatisztikáit (min, max, total stb.). A statisztikák optimalizálása a Z-Ordering statisztikát, a kötegek számát és az optimalizált partíciókat is tartalmazza.
A kis méretű fájlokat automatikus tömörítéssel is automatikusan tömörítheti. Lásd : Automatikus tömörítés.
Javasolt gyakoriság a futtatáshoz OPTIMIZE
Engedélyezze a prediktív optimalizálást a Unity Catalog által felügyelt táblákhoz, hogy OPTIMIZE költséghatékonyan fusson automatikusan.
Amikor kiválasztja a futtatandó OPTIMIZEgyakoriságot, a teljesítmény és a költség közötti kompromisszum jön létre. A végfelhasználói lekérdezések teljesítményének javítása érdekében gyakrabban futtassa a lekérdezést OPTIMIZE . Ez magasabb költséget fog eredményezni a megnövekedett erőforrás-használat miatt. A költségek optimalizálásához futtassa ritkábban.
A Databricks azt javasolja, hogy először napi rendszerességgel futtassa OPTIMIZE, majd módosítsa a gyakoriságot a költségek és a teljesítmény közötti kompromisszumok egyensúlyának megtalálásához.
Ajánlott példánytípusok ehhez: OPTIMIZE
Mindkét művelet processzorigényes művelet, amely nagy mennyiségű Parquet-dekódolást és kódolást végez.
A Databricks a Compute által optimalizált példánytípusokat javasolja.
OPTIMIZE A csatolt SSD-k is előnyösek.