Condividi tramite


Unione con shuffling ridotto 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 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 offre un'implementazione ottimizzata di MERGE che migliora notevolmente le prestazioni per i carichi di lavoro comuni riducendo il numero di operazioni di rimescolamento.

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 mescolamento riduce anche la necessità per gli utenti di rieseguire il comando OPTIMIZE ZORDER BY dopo aver eseguito un'operazione di 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

Oltre a essere più veloce da eseguire, una fusione con bassa riorganizzazione favorisce anche le operazioni successive. L'implementazione MERGE precedente ha causato la modifica completa del layout dei dati non modificati, con conseguente riduzione delle prestazioni nelle operazioni successive. La fusione con basso riordino cerca di preservare il layout dei dati esistenti dei record non modificati, inclusa l'ottimizzazione dell'ordine Z su base migliore sforzo. Di conseguenza, con una fusione a basso shuffle, le prestazioni delle operazioni su una tabella Delta peggiorano più lentamente dopo l'esecuzione di uno o più comandi MERGE.

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 i comandi OPTIMIZE o OPTIMIZE ZORDER BY.

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.