Condividi tramite


Unione casuale bassa in Azure Databricks

Nota

Low shuffle merge è generalmente disponibile (GA) in Databricks Runtime 10.4 LTS e versioni successive e in anteprima pubblica in Databricks Runtime 9.1 LTS. Databricks consiglia ai clienti che utilizzano la versione di anteprima di effettuare la migrazione 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 ha un'implementazione ottimizzata di MERGE che migliora notevolmente le prestazioni per i carichi di lavoro comuni riducendo il numero di operazioni di shuffle.

Il merge a basso riordino di Databricks offre prestazioni migliori elaborando le righe non modificate in una modalità di elaborazione separata e più efficiente, anziché insieme alle righe modificate. Di conseguenza, la quantità di dati mischiati viene ridotta significativamente, il che porta a un miglioramento delle prestazioni. La fusione a basso rimescolamento riduce anche la necessità per gli utenti di rieseguire OPTIMIZE dopo aver eseguito un'operazione MERGE.

Prestazioni ottimizzate

Molti carichi di lavoro MERGE aggiornano solo un numero relativamente ridotto di righe in una tabella. Tuttavia, le tabelle Delta possono essere aggiornate solo per ogni file. Quando il comando MERGE 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'ottimizzazione del merge a basso shuffle migliora l'elaborazione delle righe non modificate. In passato, sono stati elaborati nello stesso modo delle righe modificate, facendoli passare attraverso più fasi di rimescolamento e calcoli onerosi. Nella fusione con basse rimescolazioni, le righe non modificate vengono elaborate senza rimescolamenti, un'elaborazione costosa o sovraccarico aggiuntivo.

Layout dei dati ottimizzato

La fusione a bassa mescolanza è più veloce da eseguire e porta vantaggi alle operazioni successive. L'implementazione precedente MERGE ha modificato completamente il layout dei dati non modificati, peggiorando le prestazioni nelle operazioni successive. La fusione a basso rimescolamento preserva il layout dei dati esistenti dei record non modificati, incluso il layout del clustering liquido, su base di miglior sforzo, e le prestazioni diminuiscono più lentamente dopo l'esecuzione di uno o più comandi.

Nota

La fusione shuffle minima cerca di mantenere il layout dei dati sui dati esistenti che non vengono modificati. Il layout dei dati aggiornati o appena inseriti potrebbe non essere ottimale, quindi potrebbe essere comunque necessario eseguire OPTIMIZE su tabelle con clustering liquido abilitato.

Disponibilità

L'unione di shuffle ridotta è abilitata per impostazione predefinita in Databricks Runtime 10.4 e versioni successive. Nelle versioni precedenti supportate di Databricks Runtime si può abilitare impostando il spark.databricks.delta.merge.enableLowShuffle di configurazione su true. Questo flag non ha alcun effetto in Databricks Runtime 10.4 e versioni successive.

Legacy di ordinamento Z

Per le tabelle che utilizzano lo Z-ordering, il merge con basso shuffle cerca anche di preservare il layout Z-order esistente sui dati non modificati su base di miglior sforzo. Il layout dei dati aggiornati o appena inseriti potrebbe non essere ottimale, quindi potrebbe essere comunque necessario eseguire OPTIMIZE ZORDER BY dopo un'operazione MERGE . Databricks consiglia di usare il clustering liquido per tutte le nuove tabelle.