Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:
Databricks SQL
Databricks Runtime
Optimerar layouten för Delta Lake-data. Du kan också optimera en delmängd av data eller sortera data efter kolumn. Om du inte anger samgruppering och tabellen inte har definierats med flytande klustring utförs bin-packning optimering.
Syntax
OPTIMIZE table_name [FULL] [WHERE predicate]
[ZORDER BY (col_name1 [, ...] ) ]
Kommentar
- Optimering av binpackning är idempotent, vilket innebär att om den körs två gånger på samma datauppsättning har den andra körningen ingen effekt. Syftet är att skapa jämnt balanserade datafiler med avseende på deras storlek på disken, men inte nödvändigtvis antalet tupplar per fil. De två åtgärderna är dock oftast korrelerade.
- Z-Ordering är inte idempotent utan syftar till att vara en stegvis åtgärd. Den tid det tar för Z-Beställning är inte garanterat att minska över flera körningar. Men om inga nya data har lagts till i en partition som just Z-Sorterades, kommer en ytterligare Z-sortering av partitionen inte att ha någon effekt. Syftet är att skapa jämnt balanserade datafiler med avseende på antalet tupplar, men inte nödvändigtvis datastorleken på disken. De två måtten är oftast korrelerade, men det kan finnas situationer när så inte är fallet, vilket leder till skevhet i optimera aktivitetstider.
Kommentar
När du använder Databricks Runtime för att styra utdatafilens storlek anger du Spark-konfigurationenspark.databricks.delta.optimize.maxFileSize. Standardvärdet är 1073741824, som anger storleken till 1 GB. Om du anger värdet 104857600 anges filstorleken till 100 MB.
Viktigt!
När du ändrar en tabells komprimeringskodc med hjälp av delta.parquet.compression.codec egenskapen återkomprimeras inte befintliga datafiler automatiskt. Om du vill komprimera befintliga data med det valda komprimeringsformatet kör du OPTIMIZE table_name FULL (Databricks Runtime 16.0 och senare):
-- Change compression codec
ALTER TABLE table_name SET TBLPROPERTIES ('delta.parquet.compression.codec' = 'ZSTD');
-- Recompress all existing data files
OPTIMIZE table_name FULL;
Parametrar
-
Identifierar en befintlig Delta-tabell. Namnet får inte innehålla en temporal specifikation eller alternativspecifikation.
FULLGäller för:
Databricks Runtime 16.0 och senareSkriver om alla datafiler i tabellen. Använd
OPTIMIZE table_name FULLför att:- Optimera hela tabellen inklusive data som tidigare kan ha klustrats (för tabeller med flytande klustring).
- Komprimera befintliga datafiler igen när du ändrar tabellens komprimeringskodc med hjälp av
delta.parquet.compression.codecegenskapen .
WHEREOptimera delmängden av rader som matchar det angivna partitionspredikatet. Endast filter som omfattar partitionsnyckelattribut stöds.
Du kan inte använda den här klausulen på tabeller som använder flytande klustring.
ZORDER BYSamla kolumninformation i samma uppsättning filer. Samlokalitet används av algoritmer för datahopp i Delta Lake för att avsevärt minska mängden data som behöver läsas. Du kan ange flera kolumner för
ZORDER BYsom en kommaavgränsad lista. Lokalitetens effektivitet minskar dock med varje ytterligare kolumn.Du kan inte använda den här klausulen på tabeller som använder flytande klustring.
Exempel
> OPTIMIZE events;
> OPTIMIZE events FULL;
> OPTIMIZE events WHERE date >= '2017-01-01';
> OPTIMIZE events
WHERE date >= current_timestamp() - INTERVAL 1 day
ZORDER BY (eventType);
Mer information om kommandot OPTIMIZE finns i Optimera datafillayout.