OPTIMIZE

Si applica a: segno di spunta sì Databricks SQL segno di spunta sì 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 configurazione spark.databricks.delta.optimize.maxFileSizedi 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

  • table_name

    Identifica una tabella Delta esistente. Il nome non deve includere una specifica temporale o una specifica delle opzioni.

  • FULL

    Si applica a: segno di spunta sì 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 Ottimizzare il layout dei OPTIMIZE file di dati.