Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Quando uma consulta une uma tabela Delta Lake grande a uma tabela menor filtrada, os valores do filtro não são conhecidos até que a consulta seja executada. Sem poda em tempo de execução, a consulta escaneia todos os arquivos da tabela grande, até mesmo os que não contêm linhas correspondentes. A poda dinâmica de arquivos resolve esse problema. Em tempo de execução, o otimizador propaga os resultados do filtro de um lado da junção para a varredura da tabela Delta Lake e pula arquivos que não podem conter linhas correspondentes.
A poda dinâmica de arquivos está ativada por padrão. Você não precisa mudar suas consultas para se beneficiar disso.
Quando a poda dinâmica de arquivos se aplica
A poda dinâmica de arquivos se aplica apenas a joins em tabelas Delta Lake. Em uma declaração MERGE, ele usa os valores da chave de junção da fonte para pular arquivos alvo quando a condição de fusão compara uma coluna de origem com uma coluna de alvo para igualdade. Em instruções UPDATE e DELETE, ela se aplica quando a condição contém uma subconsulta que faz o mesmo tipo de comparação.
A remoção dinâmica de arquivos em instruções MERGE, UPDATE e DELETE requer computação com Photon habilitado. Para SELECT declarações, o Photon possui poda dinâmica de arquivos mais ampla e confiável. Sem o Photon, a poda dinâmica de arquivos ainda pode ser aplicada a instruções SELECT, dependendo da forma da consulta e do plano de execução. Confira O que é o Photon?.
A poda dinâmica de arquivos melhora o desempenho principalmente para tabelas não particionadas e para joins em colunas não particionadas. Por padrão, ele só é acionado quando a grande tabela Delta Lake na junção tem pelo menos 10 GB e tem pelo menos 10 arquivos. Consulte Configuração.
A poda dinâmica de arquivos também reduz conflitos de escrita. Quando o Delta Lake verifica conflitos durante um commit, ele considera arquivos que a poda dinâmica de arquivos ignorou. Isso reduz o número de transações fracassadas. Consulte Níveis de isolamento e conflitos de gravação.
Práticas Recomendadas
O efeito de desempenho da poda dinâmica de arquivos está correlacionado com a forma como os dados são agrupados. Se os valores usados na junção estiverem distribuídos por todos os arquivos, a eliminação dinâmica de arquivos acaba ignorando poucos arquivos. Para ajudar a poda dinâmica de arquivos a pular mais arquivos, siga estas práticas:
- Use liquid clustering nas colunas às quais você faz junção com frequência, para que as linhas correspondentes fiquem co-localizadas em menos arquivos.
- Use computação habilitada para Photon, que as instruções
MERGE,UPDATEeDELETEexigem para a eliminação dinâmica de arquivos.
Configuração
A maioria das cargas de trabalho não precisa mudar essas configurações. Considere ajustar os limiares se uma junção contra uma tabela Delta Lake menor se beneficiaria da poda, mas ficaria abaixo do limite padrão de tamanho ou número de arquivos.
Essas propriedades de configuração do Apache Spark controlam a poda dinâmica de arquivos:
| Property | Tipo | Default | Descrição |
|---|---|---|---|
spark.databricks.optimizer.dynamicFilePruning |
Boolean |
true |
Ativa ou desativa a poda dinâmica de arquivos. |
spark.databricks.optimizer.deltaTableSizeThreshold |
Long |
10000000000 (10 GB) |
O tamanho mínimo, em bytes, da grande tabela Delta Lake na junção que aciona a poda dinâmica de arquivos. Para uma tabela menor, escanear a tabela inteira geralmente é mais barato do que aplicar os filtros. Para encontrar o tamanho de uma tabela do Delta Lake, execute DESCRIBE DETAIL table_name e verifique a coluna sizeInBytes. |
spark.databricks.optimizer.deltaTableFilesThreshold |
Integer |
10 |
O número mínimo de arquivos na grande tabela Delta Lake na junção que aciona a poda dinâmica de arquivos. Se a tabela tiver menos arquivos do que esse limite, a poda dinâmica de arquivos não é executada, porque pode não valer a pena para uma tabela com apenas alguns arquivos. Para encontrar o número de arquivos em uma tabela Delta Lake, execute DESCRIBE DETAIL table_name e verifique a numFiles coluna. |