Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
O formato de tabelas Lakehouse e Delta Lake são centrais para Microsoft Fabric. Manter as tabelas Delta otimizadas é fundamental para o desempenho e a eficiência de custos das cargas de trabalho analíticas.
Este artigo ajuda-o a decidir quando usar a V-Order e mostra os principais padrões de configuração e manutenção das tabelas Delta.
Use este artigo para:
- Compreenda o que a V-Order muda e quando é que isso ajuda.
- Compreende como a Ordem Z e a Ordem V se complementam.
- Escolha o nível de controlo correto: sessão, propriedade de tabela ou operação de escrita.
- Aplicar padrões de manutenção da tabela Delta no contexto correto de runtime do Spark.
Para orientações cruzadas sobre quando aplicar a V-Order com base em cenários de consumo, consulte Manutenção e otimização da tabela de carga cruzada.
O que é V-Order?
V-Order é uma otimização em tempo de escrita para ficheiros Parquet que pode melhorar o desempenho das consultas subsequentes em motores do Fabric.
De relance:
- Onde mais ajuda: Padrões intensivos em leitura, como painéis de controle, análises interativas e varreduras repetidas.
- Como ajuda: Reorganiza o layout Parquet (por exemplo, distribuição de grupos de linhas, codificação e compressão) para melhorar a eficiência da leitura.
- Compromisso típico: As gravações podem demorar mais (muitas vezes cerca de 15% em média), enquanto as leituras podem melhorar significativamente dependendo da carga de trabalho.
- Compatibilidade do motor: Os ficheiros mantêm-se compatíveis com o Parquet de código aberto, e funcionalidades da Delta como o Z-Order continuam compatíveis.
- Âmbito: A ordem V é ao nível do ficheiro. Operações Delta como compactação, vácuo e viagem no tempo podem ser usadas com ele.
Controlo a ordem V escreve
A V-Order é usada para otimizar o layout dos ficheiros Parquet para um desempenho de consulta mais rápido, especialmente em cenários com muita leitura. Em Microsoft Fabric, V-Order está desativado por padrão para todos os espaços de trabalho recém-criados para otimizar o desempenho em cargas de trabalho de engenharia de dados intensas em gravação.
O comportamento V-Order no Apache Spark é controlado através das seguintes configurações:
| Configuração | Valor padrão | Descrição |
|---|---|---|
spark.sql.parquet.vorder.default |
false |
Controla a escrita em V-Order ao nível da sessão. Configurado como false por padrão nos novos workspaces do Fabric. |
TBLPROPERTIES("delta.parquet.vorder.enabled") |
Não definido | Controla o comportamento padrão de V-Order no nível da tabela. |
Opção do gravador DataFrame: parquet.vorder.enabled |
Não definido | Usado para controlar o V-Order ao nível da operação de escrita. |
Use os comandos a seguir para habilitar ou substituir as gravações V-Order conforme necessário para seu cenário.
A V-Order está desativada por defeito nos novos espaços de trabalho do Fabric (spark.sql.parquet.vorder.default=false) para melhorar o desempenho de gravação nos pipelines de ingestão e transformação.
Para cargas de trabalho com muita leitura, como consultas interativas ou dashboards, ative a V-Order definindo spark.sql.parquet.vorder.default para true. Também pode mudar para readHeavyforSpark ou ReadHeavy perfis de recursos, que ativam automaticamente o V-Order para desempenho focado na leitura.
No runtime do Fabric 1.3 e posteriores, a spark.sql.parquet.vorder.enable definição é removida. Como a V-Order pode ser aplicada automaticamente durante a otimização Delta com OPTIMIZE, não precisas desta configuração antiga. Se estás a migrar de versões anteriores em tempo de execução, remove esta definição do teu código.
Verifique a configuração do V-Order na sessão do Apache Spark
Usa estes comandos para confirmar o valor atual da sessão antes de o alterares.
%%sql
SET spark.sql.parquet.vorder.default
Desativar a escrita V-Order na sessão do Apache Spark
Use estes comandos quando a sua carga de trabalho for intensiva em operações de escrita e desejar uma ingestão ou escrita de transformações mais rápidas.
%%sql
SET spark.sql.parquet.vorder.default=FALSE
Ativar a escrita em V-Order na sessão do Apache Spark
Quando ativas a V-Order ao nível da sessão, todas as escritas do Parquet nessa sessão usam a V-Order, incluindo tabelas não-Delta Parquet e tabelas Delta, mesmo que parquet.vorder.enabled esteja explicitamente definido para false.
%%sql
SET spark.sql.parquet.vorder.default=TRUE
Controle V-Order usando propriedades de tabela Delta
Esta secção utiliza o Spark SQL apenas porque as propriedades das tabelas são definidas através de SQL DDL e ALTER TABLE instruções.
Usa as propriedades da tabela quando quiseres um padrão ao nível da tabela que se aplique entre sessões.
Habilite a propriedade da tabela V-Order durante a criação da tabela:
%%sql
CREATE TABLE person (id INT, name STRING, age INT) USING parquet TBLPROPERTIES("delta.parquet.vorder.enabled" = "true");
Quando a propriedade da tabela for definida como true, INSERT, UPDATE ou MERGE, aplica-se a V-Ordem no momento da escrita. As definições ao nível da sessão e do nível de escrita continuam a prevalecer, pelo que as escritas podem continuar a usar V-Order mesmo quando TBLPROPERTIES está definido para false.
Ative ou desative o V-Order modificando a propriedade da tabela:
%%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");
Depois de ativar ou desativar o V-Order usando as propriedades da tabela, somente gravações futuras na tabela serão afetadas. Os arquivos Parquet mantêm a ordem tal como foi usada quando foram criados. Para modificar a estrutura física atual para aplicar ou remover V-Order, leia Compactação de tabela.
Controlando V-Order diretamente em operações de gravação
Esta secção utiliza o PySpark para demonstrar a API de escritor DataFrame. O mesmo padrão está disponível nas APIs Scala DataFrame com opções equivalentes.
Use opções de nível de escrita quando precisar de controlo por operação em vez de predefinições ao nível de sessão ou tabela.
Todos os comandos de escrita do Apache Spark herdam a definição de sessão quando não são explicitamente sobrepostos. Os exemplos seguintes escrevem usando V-Order herdando a configuração da sessão.
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")
V-Order só se aplica a arquivos afetados pelo predicado.
Numa sessão onde spark.sql.parquet.vorder.default está desdefinido ou definido para false, os seguintes comandos escrevem usando V-Order:
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()