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.
Il formato Lakehouse e Delta Lake è fondamentale per Microsoft Fabric. Mantenere ottimizzate le tabelle Delta è fondamentale per le prestazioni e l'efficienza dei costi per i carichi di lavoro di analisi.
Questo articolo ti aiuta a decidere quando usare l'ordine V e mostra i principali modelli di configurazione e manutenzione per le tabelle Delta.
Usare questo articolo per:
- Capisci cosa cambia l'ordine V e quando è utile.
- Capire come si completano l'ordine Z e l'ordine V.
- Scegliere il livello di controllo corretto: sessione, proprietà della tabella o operazione di scrittura.
- Applicare i modelli di manutenzione della tabella Delta nel contesto di runtime Spark corretto.
Per indicazioni cross-workload su quando applicare l'ordine V basato sugli scenari di consumo, vedi Cross-workload table maintenance and optimization.
Cos'è il V-order?
L'ordine V è un'ottimizzazione del tempo di scrittura per i file Parquet che può migliorare le prestazioni delle query a valle tra i motori Fabric.
A colpo d'occhio:
- Dove è più utile: Modelli con elevato utilizzo di lettura, ad esempio dashboard, analisi interattiva e analisi ripetute.
- Come è utile: Riorganizza il layout Parquet (ad esempio, distribuzione, codifica e compressione dei gruppi di righe) per migliorare l'efficienza di lettura.
- Compromesso tipico: Le scritture potrebbero richiedere più tempo (spesso circa 15% in media), mentre le letture possono migliorare significativamente a seconda del carico di lavoro.
- Compatibilità del motore: I file rimangono conformi a Parquet open source e le funzionalità Delta come Z-Order rimangono compatibili.
- Ambito: L'ordine V è a livello di file. Con esso è possibile usare operazioni delta come compattazione, vuoto e tempo di viaggio.
Scritture in ordine V di controllo
L'ordine V viene utilizzato per ottimizzare la disposizione dei file Parquet per prestazioni di query più rapide, specialmente in scenari a forte lettura. In Fabric, il V-order è disabilitato di default per tutti gli spazi di lavoro appena creati, al fine di ottimizzare le prestazioni per carichi di lavoro di data engineering che richiedono molto scrittura.
Il comportamento dell'ordine V in Apache Spark è controllato attraverso le seguenti configurazioni:
| Impostazione | Valore predefinito | Descrizione |
|---|---|---|
spark.sql.parquet.vorder.default |
false |
Controlla la scrittura a livello di sessione in ordine V. Impostare su false per impostazione predefinita nei nuovi spazi di lavoro di Fabric. |
TBLPROPERTIES("delta.parquet.vorder.enabled") |
Non impostato | Controlla il comportamento predefinito dell'ordine V a livello di tabella. |
Opzione del writer di DataFrame: parquet.vorder.enabled |
Non impostato | Utilizzato per controllare l'ordine V a livello di operazione di scrittura. |
Usa i seguenti comandi per abilitare o sovrascrivere le scritture V-order secondo necessità per il tuo scenario.
L'ordine V è disabilitato di default nei nuovi workspace Fabric (spark.sql.parquet.vorder.default=false) per migliorare le prestazioni di scrittura per pipeline di ingestione e trasformazione.
Per carichi di lavoro con molta lettura come query interattive o dashboarding, abilita l'ordine V impostando spark.sql.parquet.vorder.default su true. Puoi anche passare ai readHeavyforSpark profili risorse OR ReadHeavy , che abilitano automaticamente l'ordine V per prestazioni focalizzate sulla lettura.
In Fabric runtime 1.3 e versioni successive l'impostazione spark.sql.parquet.vorder.enable viene rimossa. Poiché l'ordine V può essere applicato automaticamente durante l'ottimizzazione Delta con OPTIMIZE, non hai bisogno di questa impostazione più vecchia. Se si esegue la migrazione da versioni di runtime precedenti, rimuovere questa impostazione dal codice.
Controlla la configurazione V-order nella sessione Apache Spark
Usare questi comandi per confermare il valore della sessione corrente prima di modificarlo.
%%sql
SET spark.sql.parquet.vorder.default
Disabilita la scrittura V-order nella sessione Apache Spark
Utilizzare questi comandi quando il carico di lavoro consiste principalmente in operazioni di scrittura e si desidera un'inserimento o trasformazione più rapidi.
%%sql
SET spark.sql.parquet.vorder.default=FALSE
Abilita la scrittura V-order nella sessione Apache Spark
Quando si abilita l'ordine V a livello di sessione, tutte le scritture di Parquet in quella sessione usano l'ordine V, incluse le tabelle Parquet non Delta e le tabelle Delta anche se parquet.vorder.enabled è esplicitamente impostato su false.
%%sql
SET spark.sql.parquet.vorder.default=TRUE
Controlla l'ordine V usando le proprietà della tabella Delta
Questa sezione usa Spark SQL solo perché le proprietà della tabella vengono definite tramite istruzioni e DDL ALTER TABLE SQL.
Usare le proprietà della tabella quando si desidera un valore predefinito a livello di tabella che si applica tra le sessioni.
Abilita la proprietà della tabella V-order durante la creazione della tabella:
%%sql
CREATE TABLE person (id INT, name STRING, age INT) USING parquet TBLPROPERTIES("delta.parquet.vorder.enabled" = "true");
Quando la proprietà della tabella è impostata su true, INSERT, UPDATE, e MERGE applica l'ordine V al momento della scrittura. Le impostazioni a livello di sessione e scrittura hanno ancora la precedenza, quindi le scritture possono ancora usare l'ordine V anche quando TBLPROPERTIES è impostato su false.
Abilita o disabilita l'ordine V modificando la proprietà della tabella:
%%sql
ALTER TABLE person SET TBLPROPERTIES("delta.parquet.vorder.enabled" = "true");
ALTER TABLE person SET TBLPROPERTIES("delta.parquet.vorder.enabled" = "false");
ALTER TABLE person UNSET TBLPROPERTIES("delta.parquet.vorder.enabled");
Dopo aver abilitato o disabilitato l'ordine V usando le proprietà della tabella, solo le scritture future sulla tabella sono interessate. I file Parquet mantengono l'ordinamento usato al momento della creazione. Per modificare la struttura fisica attuale per applicare o rimuovere l'ordine V, leggi Compattazione della Tabella.
Controllo diretto dell'ordine V durante le operazioni di scrittura
Questa sezione usa PySpark per illustrare l'API writer dei DataFrame. Lo stesso modello è disponibile nelle API del dataframe Scala con opzioni equivalenti.
Usare le opzioni a livello di scrittura quando è necessario il controllo per operazione anziché le impostazioni predefinite a livello di sessione o a livello di tabella.
Tutti i comandi di scrittura di Apache Spark ereditano l'impostazione di sessione quando non ne viene eseguito l'override in modo esplicito. I seguenti esempi scrivono usando l'ordine V ereditando la configurazione della sessione.
df_source.write\
.format("delta")\
.mode("append")\
.saveAsTable("myschema.mytable")
DeltaTable.createOrReplace(spark)\
.addColumn("id","INT")\
.addColumn("firstName","STRING")\
.addColumn("middleName","STRING")\
.addColumn("lastName","STRING",comment="surname")\
.addColumn("birthDate","TIMESTAMP")\
.location("Files/people")\
.execute()
df_source.write\
.format("delta")\
.mode("overwrite")\
.option("replaceWhere","start_date >= '2025-01-01' AND end_date <= '2025-01-31'")\
.saveAsTable("myschema.mytable")
L'ordine V si applica solo ai file interessati dal predicato.
In una sessione in cui spark.sql.parquet.vorder.default è unimpostato o impostato a false, i seguenti comandi scrivono usando l'ordine V:
df_source.write\
.format("delta")\
.mode("overwrite")\
.option("replaceWhere","start_date >= '2025-01-01' AND end_date <= '2025-01-31'")\
.option("parquet.vorder.enabled","true")\
.saveAsTable("myschema.mytable")
DeltaTable.createOrReplace(spark)\
.addColumn("id","INT")\
.addColumn("firstName","STRING")\
.addColumn("middleName","STRING")\
.addColumn("lastName","STRING",comment="surname")\
.addColumn("birthDate","TIMESTAMP")\
.option("parquet.vorder.enabled","true")\
.location("Files/people")\
.execute()