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 ordem V e mostra os principais padrões de configuração e manutenção das tabelas Delta.
Use este artigo para:
- Compreende o que a ordem V muda e quando é que ajuda.
- Compreenda 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 entre cargas de trabalho sobre quando aplicar a ordem V com base em cenários de consumo, veja Manutenção e otimização da tabela de carga cruzada.
O que é a ordem V?
V-order é uma otimização em tempo de escrita para ficheiros Parquet que pode melhorar o desempenho das consultas a jusante em motores 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.
Escritas em ordem V de controlo
A ordem V é usada para otimizar o layout dos ficheiros Parquet para um desempenho de consulta mais rápido, especialmente em cenários com muita leitura. No Fabric, a ordem V está desativada por defeito para todos os espaços de trabalho recém-criados, para otimizar o desempenho em cargas de trabalho de engenharia de dados com grande escrita.
O comportamento da ordem V 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 ordem V 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 da ordem V ao nível da tabela. |
Opção do gravador DataFrame: parquet.vorder.enabled |
Não definido | Usado para controlar a ordem V ao nível da operação de escrita. |
Use os seguintes comandos para ativar ou sobrepor escritas V-order conforme necessário para o seu cenário.
A ordem V está desativada por defeito nos novos espaços de trabalho Fabric (spark.sql.parquet.vorder.default=false) para melhorar o desempenho de escrita em pipelines de ingestão e transformação.
Para cargas de trabalho intensivas em leitura, como consultas interativas ou dashboards, ative a V-order definindo spark.sql.parquet.vorder.default para true. Também pode mudar para readHeavyforSpark perfis de recursos OR ReadHeavy , que ativam automaticamente a ordem V para desempenho focado na leitura.
No runtime do Fabric 1.3 e posteriores, a spark.sql.parquet.vorder.enable definição é removida. Como a ordem V pode ser aplicada automaticamente durante a otimização Delta com OPTIMIZE, não precisas desta configuração mais 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 da ordem V na sessão 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 por ordem V na sessão 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 por ordem V numa sessão Apache Spark
Quando ativa a ordem V ao nível da sessão, todas as escritas do Parquet nessa sessão usam a ordem V, incluindo tabelas Parquet não-Delta e tabelas Delta, mesmo que parquet.vorder.enabled esteja explicitamente definido como false.
%%sql
SET spark.sql.parquet.vorder.default=TRUE
Controla a ordem V usando propriedades da 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.
Ativar 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 está definida para true, INSERT, UPDATE, e MERGE aplicam ordem V no momento da escrita. As definições ao nível da sessão e ao nível de escrita continuam a ter prioridade, pelo que as escritas podem continuar a usar a ordem V mesmo quando TBLPROPERTIES está definida para false.
Ative ou desative a ordem V alterando 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 a V-order usando propriedades da tabela, apenas futuras escritas na tabela são afetadas. Os arquivos Parquet mantêm a ordem tal como foi usada quando foram criados. Para alterar a estrutura física atual para aplicar ou remover a ordem V, leia Compactação da Tabela.
Controlo da ordem V diretamente em operações de escrita
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 a ordem V, 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")
A ordem V aplica-se apenas a ficheiros afetados pelo predicado.
Numa sessão onde spark.sql.parquet.vorder.default está desdefinido ou definido para false, os seguintes comandos escrevem usando a ordem 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()