OPTIMIZE
Si applica a: Databricks SQL Databricks Runtime
Ottimizza il layout dei dati Delta Lake. Facoltativamente, ottimizzare un subset di dati o collocare i dati per colonna. Se non si specifica la collocazione e la tabella non è definita con il clustering liquido, viene eseguita l'ottimizzazione della compressione bin.
Sintassi
OPTIMIZE table_name [FULL] [WHERE predicate]
[ZORDER BY (col_name1 [, ...] ) ]
Nota
- L'ottimizzazione della compressione bin è idempotente, ovvero se viene eseguita due volte nello stesso set di dati, la seconda esecuzione non ha alcun effetto. Mira a produrre file di dati uniformemente bilanciati in relazione alle dimensioni del disco, ma non necessariamente al numero di tuple per ogni file. Tuttavia, le due misure sono più spesso correlate.
- L'ordinamento Z non è idempotente , ma mira a essere un'operazione incrementale. Il tempo necessario per l'ordinamento Z non è garantito per ridurre le esecuzioni multiple. Tuttavia, se non sono stati aggiunti nuovi dati a una partizione appena Z-Ordered, un altro ordinamento Z di tale partizione non avrà alcun effetto. Mira a produrre file di dati uniformemente bilanciati rispetto al numero di tuple, ma non necessariamente alle dimensioni dei dati su disco. Le due misure sono il più delle volte correlate, ma possono verificarsi situazioni in cui non lo sono, causando uno sfasamento del tempo dell'attività di ottimizzazione.
Nota
Durante l'uso di Databricks Runtime, per controllare le dimensioni del file di output, impostare la configurazionespark.databricks.delta.optimize.maxFileSize
di Spark. Il valore predefinito è 1073741824
, che imposta le dimensioni su 1 GB. Se si specifica il valore 104857600
, le dimensioni del file vengono impostate su 100 MB.
Parametri
-
Identifica una tabella Delta esistente. Il nome non deve includere una specifica temporale o una specifica delle opzioni.
FULL
Si applica a: Databricks Runtime 16.0 e versioni successive
Ottimizzare l'intera tabella, inclusi i dati che potrebbero essere stati in precedenza raggruppati. Questa clausola può essere specificata solo per le tabelle che usano clustering liquido.
WHERE
Ottimizzare il subset di righe corrispondenti al predicato di partizione specificato. Sono supportati solo i filtri che coinvolgono gli attributi della chiave di partizione.
Non è possibile utilizzare questa clausola nelle tabelle che usano clustering liquido.
ZORDER BY
Collocare le informazioni sulle colonne nello stesso set di file. La co-località viene usata dagli algoritmi di data-skipping di Delta Lake per ridurre drasticamente la quantità di dati che devono essere letti. È possibile specificare più colonne per
ZORDER BY
come elenco delimitato da virgole. Tuttavia, l'efficacia della località diminuisce con ogni colonna aggiuntiva.Non è possibile utilizzare questa clausola nelle tabelle che usano clustering liquido.
Esempi
> OPTIMIZE events;
> OPTIMZIE events FULL;
> OPTIMIZE events WHERE date >= '2017-01-01';
> OPTIMIZE events
WHERE date >= current_timestamp() - INTERVAL 1 day
ZORDER BY (eventType);
Per altre informazioni sul comando, vedere OPTIMIZE
dei file di dati.