OPTIMIZE
Platí pro: Databricks SQL Databricks Runtime
Optimalizuje rozložení dat Delta Lake. Volitelně optimize podmnožinu dat nebo seskupit data pomocí column. Pokud nezadáte kolokaci a table není definováno pomocí shlukování kapalin, provede se optimalizace balení do přihrádek.
Syntaxe
OPTIMIZE table_name [FULL] [WHERE predicate]
[ZORDER BY (col_name1 [, ...] ) ]
Poznámka:
- Optimalizace při balení přihrádky je idempotentní, což znamená, že pokud je spuštěna dvakrát ve stejné datové sadě, druhé spuštění nemá žádný vliv. Cílem je vytvořit rovnoměrně vyvážené datové soubory s ohledem na jejich velikost na disku, ale nemusí nutně počet řazených kolekcí členů na soubor. Tyto dvě míry ale nejčastěji korelují.
- Pořadí Z-Ordering není idempotentní , ale má být přírůstkovou operací. Doba, po které trvá řazení Z, není zaručeno, že se sníží více spuštění. Pokud se ale do partition nepřidali žádná nová data, která byla pouze Z-Order, nebude mít žádný vliv další řazení Z této partition. Cílem je vytvořit rovnoměrně vyvážené datové soubory s ohledem na počet řazených kolekcí členů, ale ne nutně velikost dat na disku. Dvě míry jsou nejčastěji korelovány, ale mohou nastat situace, kdy tomu tak není, což vede ke skreslení v časech úkolů optimize.
Poznámka:
Při použití Databricks Runtime ke kontrole velikosti výstupního souboru se používá konfigurace Spark setspark.databricks.delta.optimize.maxFileSize
. Výchozí hodnota je 1073741824
, která nastaví velikost na 1 GB. Zadáním hodnoty 104857600
nastavíte velikost souboru na 100 MB.
Parameters
-
Identifikuje existující Delta table. Název nesmí obsahovat dočasnou specifikaci ani specifikaci možností.
FULL
Platí pro: Databricks Runtime 16.0 a novější
Optimize celý table včetně dat, která byla dříve seskupována. Tuto klauzuli lze zadat pouze pro tables, které používají shlukování kapalin.
WHERE
Optimize podmnožinu řádků odpovídajících danému predikátu partition. Podporují se pouze filtry zahrnující partition klíčové atributy.
Tuto klauzuli nelze použít na tables, které používají shlukováníkapalin.
ZORDER BY
Umístit column informací do stejného set souborů. Společné umístění používají algoritmy Delta Lake pro přeskakování dat k výraznému snížení množství dat, která je potřeba číst. Můžete zadat více columns pro
ZORDER BY
jako list, oddělené čárkami. Účinnost lokality se však snižuje s každou další column.Tuto klauzuli nelze použít na tables, které používají shlukování kapalin .
Příklady
> OPTIMIZE events;
> OPTIMZIE events FULL;
> OPTIMIZE events WHERE date >= '2017-01-01';
> OPTIMIZE events
WHERE date >= current_timestamp() - INTERVAL 1 day
ZORDER BY (eventType);
Další informace o příkazu OPTIMIZE
naleznete v tématu Optimize rozložení datového souboru.