OPTIMIZE
A következőkre vonatkozik: Databricks SQL Databricks Runtime
Optimalizálja a Delta Lake-adatok elrendezését. Igény szerint optimalizálhatja az adatok egy részhalmazát, vagy oszlop szerint csoportosíthatja az adatokat. Ha nem adja meg az elhelyezést, és a tábla nincs meghatározva folyékony fürtözéssel, a csomagolás optimalizálása történik.
Szintaxis
OPTIMIZE table_name [WHERE predicate]
[ZORDER BY (col_name1 [, ...] ) ]
Feljegyzés
- 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. Célja, hogy egyenletesen kiegyensúlyozott adatfájlokat állítsunk elő a lemez méretéhez képest, de nem feltétlenül fájlonkénti összesítést. A két intézkedés azonban leggyakrabban korrelál.
- A Z-Ordering nem idempotens , hanem növekményes művelet. A Z-Orderinghez szükséges idő nem garantált, hogy több futtatáson keresztül csökkenjen. Ha azonban nem ad hozzá új adatokat egy csak Z-ordered nevű partícióhoz, a partíció egy másik Z-sorrendezése nem lesz hatással. Célja, hogy egyenletesen kiegyensúlyozott adatfájlokat állítsunk elő a csuplok száma tekintetében, de nem feltétlenül lemezen lévő adatméretet. A két mérték leggyakrabban korrelál, de előfordulhatnak olyan helyzetek, amikor ez nem így van, ami a tevékenységidő optimalizálásához vezet.
Feljegyzés
A Databricks Runtime használata közben állítsa be a Spark-konfigurációt spark.databricks.delta.optimize.maxFileSize
a kimeneti fájl méretének szabályozásához. Az alapértelmezett érték az 1073741824
, amely a méretet 1 GB-ra állítja. Az érték 104857600
megadása 100 MB-ra állítja a fájlméretet.
Paraméterek
-
Egy meglévő Delta-táblát azonosít. A név nem tartalmazhat időbeli specifikációt.
WHERE
Optimalizálja az adott partíció predikátumának megfelelő sorok részhalmazát. Csak a partíciókulcs-attribútumokat tartalmazó szűrők támogatottak.
Ez a záradék nem használható folyékony fürtözést használó táblákon.
ZORDER BY
Oszlopinformációk rendezése ugyanabban a fájlkészletben. A Delta Lake adatátugrási algoritmusai a közös helységet használják az olvasni kívánt adatok mennyiségének drasztikus csökkentéséhez. Vesszővel tagolt listaként több oszlopot
ZORDER BY
is megadhat. A helység hatékonysága azonban minden további oszlop esetében csökken.Ez a záradék nem használható folyékony fürtözést használó táblákon.
Példák
> OPTIMIZE events;
> OPTIMIZE events WHERE date >= '2017-01-01';
> OPTIMIZE events
WHERE date >= current_timestamp() - INTERVAL 1 day
ZORDER BY (eventType);
A parancsról további információt az OPTIMIZE
Adatfájl-elrendezés optimalizálása című témakörben talál.