Condividi tramite


Unione casuale bassa in Azure Databricks

Nota

L'unione casuale bassa è disponibile a livello generale in Databricks Runtime 10.4 lTS e versioni successive e in anteprima pubblica in Databricks Runtime 9.1 LTS. Databricks consiglia di eseguire la migrazione dei clienti in anteprima a Databricks Runtime 10.4 LTS o versione successiva.

Il comando MERGE viene usato per eseguire aggiornamenti, inserimenti ed eliminazioni simultanee da una tabella Delta Lake. Azure Databricks offre un'implementazione ottimizzata di MERGE che migliora notevolmente le prestazioni per i carichi di lavoro comuni riducendo il numero di operazioni casuali.

L'unione casuale bassa di Databricks offre prestazioni migliori elaborando righe non modificate in modalità di elaborazione separata e semplificata, anziché elaborarle insieme alle righe modificate. Di conseguenza, la quantità di dati casuali viene ridotta significativamente, con conseguente miglioramento delle prestazioni. L'unione casuale bassa riduce anche la necessità di rieseguire il comando OPTIMIZE ZORDER BY dopo l'esecuzione di un'operazione MERGE .

Prestazioni ottimizzate

Molti MERGE carichi di lavoro aggiornano solo un numero relativamente ridotto di righe in una tabella. Tuttavia, le tabelle Delta possono essere aggiornate solo per ogni file. Quando il MERGE comando deve aggiornare o eliminare un numero ridotto di righe archiviate in un determinato file, deve anche elaborare e riscrivere tutte le righe rimanenti archiviate nello stesso file, anche se queste righe non vengono modificate. L'unione casuale bassa ottimizza l'elaborazione di righe non modificate. In precedenza, sono stati elaborati nello stesso modo delle righe modificate, passandoli attraverso più fasi casuali e calcoli costosi. In un'unione casuale bassa, le righe non modificate vengono invece elaborate senza errori casuali, elaborazione costosa o altro sovraccarico aggiunto.

Layout dei dati ottimizzato

Oltre a essere più veloce per l'esecuzione, un'unione casuale bassa offre anche le operazioni successive. L'implementazione precedente MERGE ha causato la modifica completa del layout dei dati non modificati, con conseguente riduzione delle prestazioni nelle operazioni successive. Un'unione casuale bassa tenta di mantenere il layout dei dati esistenti dei record non modificati, inclusa l'ottimizzazione dell'ordine Z su base ottimale. Di conseguenza, con un'unione casuale bassa, le prestazioni delle operazioni in una tabella Delta peggiorano più lentamente dopo l'esecuzione di uno o più MERGE comandi.

Nota

Un'unione casuale bassa tenta di mantenere il layout dei dati sui dati esistenti che non vengono modificati. Il layout di dati dei dati aggiornati o appena inseriti potrebbe non essere ottimale, pertanto potrebbe essere comunque necessario eseguire i OPTIMIZE comandi o OPTIMIZE ZORDER BY .

Disponibilità

L'unione casuale bassa è abilitata per impostazione predefinita in Databricks Runtime 10.4 e versioni successive. Nelle versioni di Databricks Runtime supportate in precedenza è possibile abilitarla impostando la configurazione spark.databricks.delta.merge.enableLowShuffle su true. Questo flag non ha alcun effetto in Databricks Runtime 10.4 e versioni successive.