Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
I file di dimensioni appropriate sono importanti per le prestazioni delle query, l'utilizzo delle risorse e la gestione dei metadati. I file più piccoli aumentano il sovraccarico delle attività e le operazioni sui metadati, mentre i file di dimensioni maggiori possono sottoutilizzare il parallelismo e l'I/O. Delta Lake usa i metadati dei file per eliminare le partizioni e ignorare i dati, pertanto la destinazione delle dimensioni corrette del file garantisce letture, scritture e manutenzione efficienti.
Per consigli relativi alle dimensioni dei file in base a uno scenario di utilizzo (endpoint di analisi SQL, Power BI Direct Lake, Spark), vedere Manutenzione e ottimizzazione delle tabelle tra carichi di lavoro.
Le sezioni seguenti descrivono le funzionalità principali che è possibile usare per ottimizzare le dimensioni dei file nelle tabelle Delta.
Operazioni di layout dei dati ottimizzabili
Optimize
Il OPTIMIZE comando riscrive i file di piccole dimensioni come file di dimensioni maggiori per migliorare il layout dei dati nelle tabelle Delta. Per altri dettagli, incluse le informazioni sull'ottimizzazione delle dimensioni dei file, vedere la documentazione del comando OPTIMIZE .
Compattazione automatica
La compattazione automatica valuta automaticamente l'integrità delle partizioni dopo ogni operazione di scrittura. Quando rileva una frammentazione eccessiva dei file (troppi file di piccole dimensioni) all'interno di una partizione, attiva un'operazione sincrona OPTIMIZE immediatamente dopo il commit della scrittura. Questo approccio basato su writer per la manutenzione dei file è generalmente ottimale perché la compattazione viene eseguita solo quando viene determinata come vantaggiosa attraverso il codice. Per informazioni dettagliate sulle opzioni di configurazione e altre informazioni, vedere la documentazione sulla compattazione automatica .
Ottimizzare la scrittura
Ottimizzare la scrittura riduce il sovraccarico di file di piccole dimensioni eseguendo la compattazione pre-scrittura (compressione bin), che genera meno file di dimensioni maggiori. Questo approccio consente di eseguire lo shuffling dei dati in memoria in partizioni di dimensioni ottimali prima che Spark scriva i file Parquet, ottimizzando il potenziale per generare file di dimensioni appropriate senza richiedere operazioni di pulizia immediata post-scrittura.
Utilizzare l'ottimizzazione della scrittura in modo selettivo. Lo shuffling può aggiungere tempi di elaborazione non necessari in alcuni percorsi di scrittura. Ottimizzare la scrittura è particolarmente utile quando le scritture creano in caso contrario molti file di piccole dimensioni che in seguito richiedono la compattazione.
Ottimizzare la scrittura è comunemente utile per:
- Tabelle partizionate
- Tabelle con inserimenti di piccole dimensioni frequenti
- Operazioni che probabilmente toccano molti file (
MERGE,UPDATEeDELETE)
Per l'applicazione selettiva in tabelle specifiche, annullare la configurazione della sessione e abilitare singolarmente la proprietà table. Ciò consente a ogni tabella di controllare se viene applicata l'ottimizzazione della scrittura.
Annullare l'ottimizzazione della scrittura
spark.conf.unset("spark.databricks.delta.optimizeWrite.enabled")Abilitare nella singola tabella
ALTER TABLE dbo.table_name SET TBLPROPERTIES ('delta.autoOptimize.optimizeWrite' = 'true')
Per abilitare l'ottimizzazione della scrittura per le scritture in tutte le tabelle partizionate in una sessione Spark, verificare che la configurazione della sessione non sia impostata, quindi impostare spark.microsoft.delta.optimizeWrite.partitioned.enabled:
Le dimensioni del file di destinazione generate dalla scrittura ottimizzata possono essere modificate tramite la spark.databricks.delta.optimizeWrite.binSize configurazione.
Annotazioni
Vedere i profili delle risorse per le impostazioni di scrittura predefinite ottimizzate per profilo di risorsa.
Impostare le dimensioni del file di destinazione in modo coerente
Per evitare di impostare configurazioni di sessione di dimensioni minime e massime separate per ottimizzare, compattare automaticamente e ottimizzare la scrittura, usare la delta.targetFileSize proprietà table. Questa proprietà unifica il comportamento delle dimensioni dei file a livello di tabella. Specificare il valore come stringa di byte, ad esempio , 1073741824b1048576k1024m, , 1g. Se impostata, ha la precedenza sulle configurazioni di sessione e sulle dimensioni del file di destinazione adattivo.
ALTER TABLE dbo.table_name
SET TBLPROPERTIES ('delta.targetFileSize' = '256m')
Dimensioni del file di destinazione adattivo
Microsoft Fabric fornisce dimensioni del file di destinazione adattive per eliminare la complessità correlata alla regolazione manuale delle dimensioni del file di destinazione di tutte le tabelle in una sessione o di singole tabelle tramite la proprietà della tabella delta.targetFileSize. Le dimensioni dei file di destinazione adattive usano euristica delle tabelle Delta, ad esempio le dimensioni della tabella, per stimare le dimensioni ideali del file di destinazione e aggiornare automaticamente la destinazione man mano che cambiano le condizioni, garantendo prestazioni ottimali senza interventi manuali o sovraccarichi di manutenzione.
Abilitare le dimensioni del file di destinazione adattivo
Annotazioni
Sebbene non sia attualmente abilitato per impostazione predefinita, Microsoft consiglia di abilitare la configurazione della sessione delle dimensioni del file di destinazione adattiva .
Abilitare le dimensioni del file di destinazione adattivo nelle tabelle create o modificate all'interno di una sessione Spark impostando la configurazione di sessione Spark seguente:
Comprendere il comportamento di valutazione
Se abilitata, le dimensioni del file di destinazione adattivo vengono valutate e impostate negli scenari seguenti:
-
CREATE TABLE AS SELECTeCREATE OR REPLACE TABLE AS SELECToperazioni - Sovrascrivere le scritture (ad esempio,
DataFrame.write.mode("overwrite")oINSERT OVERWRITE) - Scrive in modalità
ErrorIfExists,AppendoIgnoredurante la creazione di una nuova tabella - All'inizio del
OPTIMIZEcomando
Una volta impostate, le dimensioni ideali continuano a essere rivalutate all'inizio di ogni OPTIMIZE operazione per garantire che l'euristica corrente rifletta la distribuzione dei dati attuale e la crescita delle tabelle. Questo approccio adattivo aggiorna automaticamente le dimensioni del file di destinazione nel tempo, eliminando la necessità di ottimizzazione manuale mantenendo al tempo stesso le prestazioni di query e scrittura man mano che i dati aumentano. Quando è necessario bloccare una dimensione specifica, ad esempio in casi d'uso di iperottimizzazione o test, è possibile eseguire l'override dell'impostazione adattiva impostando in modo esplicito la proprietà della tabella definita dall'utente delta.targetFileSize .
Regolare i limiti delle dimensioni del file di destinazione adattivo
Le dimensioni del file di destinazione adattivo possono essere ulteriormente configurate tramite le configurazioni di sessione Spark seguenti:
| Proprietà | Description | Valore predefinito | Configurazione della sessione |
|---|---|---|---|
| minFileSize | Specifica le dimensioni minime del file come limite inferiore e come stringa di byte che viene utilizzata da Adaptive Target File Size quando valutata. Deve essere compreso tra 128 MB e 1 GB. | 128m | spark.microsoft.delta.targetFileSize.adaptive.minFileSize |
| maxFileSize | Specifica la dimensione massima del file (limite superiore) come stringa di byte utilizzata dalla Dimensione file obiettivo adattiva nel processo di valutazione. Deve essere compreso tra 128 MB e 1 GB. | 1024m | spark.microsoft.delta.targetFileSize.adaptive.maxFileSize |
| stopAtMaxSize | Quando true arresta ulteriori valutazioni delle dimensioni una volta che le dimensioni del file di destinazione calcolate raggiungono maxFileSize, riducendo l'overhead di valutazione su tabelle molto grandi. |
true | spark.microsoft.delta.targetFileSize.adaptive.stopAtMaxSize |
Annotazioni
Con stopAtMaxSize abilitato (impostazione predefinita), la dimensione della destinazione adattiva rimane fissa al valore massimo raggiunto, evitando calcoli aggiuntivi. Se le tabelle potrebbero ridursi dopo l'aumento, impostare questa proprietà su false per consentire il ricalcolo al di sotto della soglia massima.
Esaminare le dimensioni della destinazione valutata
È possibile controllare le dimensioni del file di destinazione adattivo valutate esaminando i dettagli e le proprietà della tabella da DESCRIBE DETAIL o DESCRIBE EXTENDED. Il valore valutato viene scritto come stringa di byte nella proprietà table delta.targetFileSize.adaptive .
Questo valore viene usato come dimensione di destinazione (o max) per ottimizzare, compattazione automatica e ottimizzare la scrittura. Il valore minimo correlato viene calcolato come metà di delta.targetFileSize.adaptive.
Comprendere l'impatto sulle prestazioni
Il grafico seguente illustra la relazione tra le dimensioni della tabella e le dimensioni ottimali del file parquet. Per le tabelle inferiori a 10 GB, fabric Spark Runtime valuta le dimensioni del file di destinazione pari a 128 MB. Man mano che le dimensioni della tabella aumentano, le dimensioni del file di destinazione si ridimensionano in modo lineare, raggiungendo fino a 1 GB per le tabelle che superano 10 TB.
Iniziando con piccoli file di 128 MB e quindi aumentando gradualmente le dimensioni dei file in formato parquet man mano che una tabella cresce, porta vantaggi a cascata:
Miglioramento del salto dei file Delta: i file di dimensione adeguata supportano il clustering ottimale dei dati e consentono al protocollo di ignorare i file Delta, eliminando più file non pertinenti durante l'esecuzione delle query. Una tabella piccola con file da 128 MB invece che da 1 GB consente 8 volte più opzioni di salto dei file.
Riduzione dei costi di aggiornamento:
MERGEeUPDATEle operazioni riscrivono solo i file interessati. I file di dimensioni corrette riducono al minimo il numero di file toccati per operazione, riducendo la quantità di dati riscritti. Con i vettori di eliminazione abilitati, il ridimensionamento corretto dei file diventa critico: le tombe a livello di riga nei file sovradimensionati comportano costi di pulizia significativi durante le operazioni di compattazione o eliminazione.Parallelismo ottimizzato: i file di dimensioni corrette consentono a Spark di ottenere il parallelismo delle attività ideale. Troppi file di piccole dimensioni sovraccaricano lo scheduler; troppo pochi file di grandi dimensioni sottoutilizzano il pool di Spark. Il dimensionamento ottimale ottimizza sia la velocità effettiva di lettura che di scrittura.
Le dimensioni del file di destinazione adattivo possono migliorare le prestazioni di compattazione e la latenza di query/scrittura quando seleziona dimensioni migliori rispetto alla configurazione predefinita. Se la valutazione adattiva produce le stesse dimensioni della configurazione di sessione Spark predefinita, non è previsto alcun miglioramento misurabile.
Importante
L'amplificazione della scrittura si verifica quando i file compattati in precedenza vengono riscritti man mano che le dimensioni del file di destinazione aumentano nel tempo. Per ridurre questo rischio, abilitare le destinazioni di compattazione a livello di file (spark.microsoft.delta.optimize.fileLevelTarget.enabled=true). Questa impostazione consente di mantenere il lavoro di compattazione precedente ignorando la ricompilazione non necessaria dei file già compattati con dimensioni di destinazione precedenti. Per altre informazioni, vedere Destinazioni di compattazione a livello di file.
Riepilogo delle procedure consigliate
Usare questi consigli per bilanciare i costi di scrittura, le prestazioni di lettura e il sovraccarico di manutenzione man mano che le tabelle aumentano.
- Enable Auto compaction per le pipeline di inserimento con scritture frequenti (streaming o micro batch) in modo da mantenere l'integrità dei file senza pianificazione manuale.
- Usare la compattazione automatica in modo selettivo per altri modelli di scrittura quando gli obiettivi a livello di servizio possono tollerare picchi occasionali di latenza di scrittura.
- Abilitare le dimensioni del file di destinazione adattivo per ridurre l'ottimizzazione manuale e mantenere le dimensioni di destinazione allineate alla crescita delle tabelle.
- Usare l'ottimizzazione della scrittura in percorsi di inserimento controllati (processi batch in grado di tollerare operazioni casuali, scritture partizionate o frequenti scritture di piccole dimensioni) per ridurre la pressione della compattazione a valle.
-
Pianificare aggiornamenti completi della tabella
OPTIMIZEdurante periodi di inattività quando è necessario riscrivere molte partizioni o applicare Z-Order. -
Abilitare l'ottimizzazione rapida per ridurre l'amplificazione della scrittura e rendere
OPTIMIZEpiù idempotente. Vedere Ottimizzazione rapida. -
Utilizzare
delta.targetFileSizeo le dimensioni adattive dei file di destinazione in modo coerente per garantire che ottimizzazione, compattazione automatica e ottimizzazione della scrittura convergano su obiettivi di dimensioni dei file compatibili. - Abilitare le destinazioni di compattazione a livello di file per ridurre la ricompilazione non necessaria man mano che le dimensioni dei file di destinazione aumentano nel tempo.