Usare variant shredding per ottimizzare le prestazioni

La frammentazione delle varianti migliora le prestazioni delle query nelle colonne VARIANT archiviando i campi ricorrenti come colonne separate nei file Parquet sottostanti. Lo shredding riduce l'I/O necessario per leggere i campi e migliora la compressione usando un formato a colonne anziché un BLOB binario.

Vedere anche VARIANTTipo, Supporto del tipo Variant per Apache Iceberg e Delta Lake e Eseguire query sui dati Variant.

Requisiti

Databricks Runtime 17.3 o versione successiva è necessario per leggere e scrivere tabelle VARIANT suddivise. Per ottenere prestazioni ottimali delle query con la raccolta di statistiche varianti e il salto dei dati, Databricks consiglia Databricks Runtime 18.1 o versione successiva.

Abilitare la cancellazione dati

A partire da Databricks Runtime 17.3, la shredding viene abilitata automaticamente quando si crea una nuova tabella con una o più VARIANT colonne usando CREATE TABLE.

CREATE OR REPLACE TABLE e ALTER TABLE non abilitano automaticamente la distruzione. In questo modo si evita di modificare il comportamento di suddivisione delle tabelle e dei carichi di lavoro esistenti.

Per le tabelle esistenti, è possibile acconsentire esplicitamente manualmente alla suddivisione impostando la enableVariantShredding proprietà table su TRUE e rifiutare esplicitamente impostando la proprietà su FALSE:

Delta Lake

ALTER TABLE my_table SET TBLPROPERTIES ('delta.enableVariantShredding' = 'true');

Tabella Iceberg

ALTER TABLE my_table SET TBLPROPERTIES ('iceberg.enableVariantShredding' = 'true');

Verificare che lo shredding sia abilitato controllando che la proprietà enableVariantShredding della tabella sia impostata su true.

Disattivare la frammentazione per una tabella specifica

Per escludere una tabella specifica dalla frammentazione nelle scritture future, impostare la proprietà della tabella enableVariantShredding su FALSE:

Delta Lake

ALTER TABLE my_table SET TBLPROPERTIES ('delta.enableVariantShredding' = 'false');

Tabella Iceberg

ALTER TABLE my_table SET TBLPROPERTIES ('iceberg.enableVariantShredding' = 'false');

Rimuovere lo shredding da una tabella esistente

Per rimuovere la suddivisione in una tabella esistente, eliminare la funzionalità con il ALTER TABLE comando . Questa operazione sovrascrive anche i dati shredded direttamente nel formato VARIANT ricostruito e imposta la proprietà della tabella VARIANT su false.

ALTER TABLE my_table DROP FEATURE "variantShredding";

Limitations

  • La frammentazione dei dati introduce un sovraccarico nelle operazioni di scrittura.
  • L'abilitazione dello shredding non converte automaticamente i dati esistenti VARIANT in una tabella. Si applica solo ai dati scritti dopo l'abilitazione della funzionalità. Per riscrivere i dati esistenti VARIANT , usare REORG TABLE my_table APPLY (SHRED VARIANT).
  • Lo shredding si applica ai campi di primo livello VARIANT o alle colonne VARIANT degli struct, ad eccezione dei dati archiviati all'interno di matrici o mappe VARIANT.