Optimize (Delta Lake on Azure Databricks)

OPTIMIZE [db_name.]table_name [WHERE predicate]
  [ZORDER BY (col_name1, col_name2, ...)]

Optimalizálja a Delta Lake-adatok elrendezését. Igény szerint optimalizálhatja az adatok egy részkészletét, vagy oszlop alapján is eloszthatja az adatokat. Ha nem adja meg a közös hely megadását, a rendszer a csomagolási optimalizálást végzi el.

Megjegyzés

  • A csomagolás optimalizálása idepotikus,ami azt jelenti, hogy ha kétszer fut ugyanazon az adatkészleten, a második futtatásnak nincs hatása. Célja, hogy egyenletesen elosztott adatfájlokat készítsen a lemezen lévő méretük alapján, de nem feltétlenül a fájlonkénti adatokat. A két intézkedés azonban a leggyakrabban korrelációban áll.
  • A Z-ordering nem idempotent, hanem növekményes művelet. A Z-orderinghez szükséges idő nem garantáltan csökken több futtatás esetén. Ha azonban nem ad hozzá új adatokat egy csak Z-megrendelt partícióhoz, a partíció egy másik Z-rendelése nem lesz hatással. Célja, hogy egyenletesen elosztott adatfájlokat készítsen a lemezek száma alapján, de nem feltétlenül a lemez adatmérete alapján. A két intézkedés leggyakrabban korrelációban áll egymással, de előfordulhatnak olyan helyzetek, amikor ez nem így van, ami a tevékenység-idő optimalizálása miatt eldúfulhat.
  • A kimeneti fájl méretének szabályozásához állítsa be a Spark-konfigurációt. Az alapértelmezett érték 1073741824 a , amely 1 GB-ra állítja a méretet. Az érték megadásával 104857600 a fájlméret 100 MB lesz.

WHERE

Optimalizálja a sorok adott partíció-predikátumnak megfelelő részhalmazát. Csak a partíciókulcs-attribútumokat tartalmazó szűrők támogatottak.

ZORDER BY

Oszlopinformációk közös halmaza ugyanabban a fájlkészletben. A Delta Lake adatugró algoritmusai a közös helyiséget használják az olvasandó adatok mennyiségének jelentős csökkentésére. Több oszlopot is megadhat a számára ZORDER BY vesszővel elválasztott listaként. A hely hatékonysága azonban minden további oszlop esetén csökken.

Példák

OPTIMIZE events

OPTIMIZE events WHERE date >= '2017-01-01'

OPTIMIZE events
WHERE date >= current_timestamp() - INTERVAL 1 day
ZORDER BY (eventType)