Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:
Databricks SQL
Databricks Runtime
Op deze pagina wordt de OPTIMIZE opdracht beschreven, waarmee de indeling van Delta Lake-gegevens wordt geoptimaliseerd. U kunt een subset van gegevens optimaliseren of gegevens samenvoegen op kolom. Als u geen collocatie opgeeft en de tabel geen liquide clustering gebruikt, voert Delta Lake optimalisatie voor bin-packing uit.
Syntaxis
OPTIMIZE table_name [FULL] [WHERE predicate]
[ZORDER BY (col_name1 [, ...] ) ]
Notitie
Optimalisatie van bin-verpakking is idempotent: als u deze twee keer uitvoert op dezelfde gegevensset, heeft de tweede uitvoering geen effect. Het produceert gelijkmatig verdeelde gegevensbestanden met betrekking tot hun grootte op schijf, maar niet noodzakelijkerwijs het aantal tuples per bestand. De twee metingen zijn het vaakst gecorreleerd.
Z-Ordering is niet idempotent, maar werkt incrementeel. De tijd die Z-Ordering neemt, is niet gegarandeerd om te verminderen over meerdere uitvoeringen. Als er echter geen nieuwe gegevens zijn toegevoegd aan een partitie die alleen Z-Geordende was, heeft het opnieuw uitvoeren van Z-Ordering op die partitie geen effect. Z-Ordering produceert gelijkmatig verdeelde gegevensbestanden met betrekking tot het aantal tuples, maar niet noodzakelijkerwijs gegevensgrootte op schijf. De twee metingen worden meestal gecorreleerd, maar scheeftrekken in de optimalisatietaaktijden kunnen optreden wanneer ze afwijken.
Notitie
Wanneer u Databricks Runtime gebruikt, stelt u de Spark-configuratiespark.databricks.delta.optimize.maxFileSize in om de grootte van het uitvoerbestand te beheren. De standaardwaarde is 1073741824 (1 GB).
104857600 Als u opgeeft, wordt de bestandsgrootte ingesteld op 100 MB.
Parameterwaarden
-
Identificeert een bestaande Delta-tabel. De naam mag geen tijdelijke specificatie of optiesspecificatie bevatten.
FULLGeldt voor:
Databricks Runtime 16.0 en hogerAlle gegevensbestanden in de tabel worden herschreven. Gebruik
OPTIMIZE table_name FULLdit om:- Optimaliseer de hele tabel, inclusief gegevens die eerder waren geclusterd (voor tabellen met behulp van liquide clustering).
- Recomprimeer bestaande gegevensbestanden wanneer u de compressiecodec van de tabel wijzigt met de eigenschap
delta.parquet.compression.codec.
Als u bestaande gegevens opnieuw wilt comprimeren nadat u de compressiecodec hebt gewijzigd, voert u het volgende uit
OPTIMIZE table_name FULL:-- Change compression codec ALTER TABLE table_name SET TBLPROPERTIES ('delta.parquet.compression.codec' = 'ZSTD'); -- Recompress all existing data files OPTIMIZE table_name FULL;Als u een subset van bestanden in een tabel wilt optimaliseren waarvoor liquide clustering is ingeschakeld, combineert
FULLu met eenWHEREpredicaat (Databricks Runtime 18.1 en hoger). Alleen eenvoudige bereikpredicaten op één clusterkolom worden ondersteund. Een bestand wordt opgenomen als een deel van het bereik overlapt met het predicaat. Bevat bijvoorbeeldOPTIMIZE events FULL WHERE date > 15een bestand met een bereik(col_min = 10, col_max = 20)omdat het bereik van het bestand overlapt met het predicaat.WHEREHiermee optimaliseert u de subset van rijen die overeenkomen met een partitie-/clusteringpredicaat. Alleen filters op partitie-/clusteringsleutelkenmerken worden ondersteund.
Gebruik in plaats daarvan (Databricks Runtime 18.1 en hoger) voor tabellen die gebruikmaken van liquide clustering
OPTIMIZE table_name FULL WHERE predicate.ZORDER BYNotitie
Databricks raadt vloeibare clustering aan voor alle nieuwe tabellen in plaats van Z-volgorde. Zie Liquid Clustering gebruiken voor tabellen.
Kolomgegevens in dezelfde set bestanden samenvoegen. Delta Lake-algoritmen voor het overslaan van gegevens maken gebruik van co-lokaliteit om de hoeveelheid gegevens te verminderen die moet worden gelezen. U kunt meerdere kolommen opgeven als een door komma's gescheiden lijst, maar de effectiviteit van co-lokaliteit neemt af met elke extra kolom.
U kunt deze component niet gebruiken voor tabellen die gebruikmaken van liquide clustering.
Voorbeelden
> OPTIMIZE events;
> OPTIMIZE events FULL;
> -- Partitioned table
> OPTIMIZE events WHERE date >= '2017-01-01';
> -- Table with liquid clustering enabled (DBR 18.1 and above)
> OPTIMIZE events FULL WHERE date >= '2025-01-01';
> OPTIMIZE events
WHERE date >= current_timestamp() - INTERVAL 1 day
ZORDER BY (eventType);
Zie Indeling van gegevensbestand optimaliseren voor meer informatie.