OPTIMIZE

A következőkre vonatkozik:check marked yes Databricks SQL check marked yes 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ótspark.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

  • table_name

    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 paranccsal kapcsolatos további információkért lásd: OPTIMIZE Adatfájlok tömörítése optimalizálással a Delta Lake-en.