Remoção dinâmica de arquivos
Quando uma query faz um join de uma tabela Delta Lake grande com uma tabela menor e filtrada, os valores do filtro não são conhecidos até a execução da query. Sem a remoção de arquivos em tempo de execução, a query verifica todos os arquivos na tabela grande, até mesmo os arquivos que não contêm linhas correspondentes. A remoção dinâmica de arquivos resolve esse problema. Em runtime, o otimizador empurra os resultados do filtro de um lado do join para a varredura da tabela Delta Lake e ignora arquivos que não podem conter linhas correspondentes.
A remoção dinâmica de arquivos é habilitada por default. Você não precisa alterar suas consultas para se beneficiar disso.
Quando a remoção dinâmica de arquivos se aplica
A remoção dinâmica de arquivos se aplica apenas ao join nas tabelas do Delta Lake. Em uma instrução MERGE, ela usa os valores de chave de join da fonte para ignorar arquivos de destino quando a condição de merge compara uma coluna de origem com uma coluna de destino quanto à 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 nas instruções MERGE, UPDATE e DELETE requer compute com Photon habilitado. Para instruções SELECT, o Photon oferece remoção dinâmica de arquivos mais abrangente e confiável. Sem Photon, a remoção dinâmica de arquivos ainda pode ser aplicada a instruções SELECT, dependendo da estrutura da query e do plano de execução. Consulte O que é Photon?.
A remoção dinâmica de arquivos melhora mais o desempenho em tabelas não particionadas e em join em colunas não particionadas. Por default, ele só é acionado quando a tabela grande do Delta Lake no join tem pelo menos 10 GB e tem pelo menos 10 arquivos. Consulte Configuração.
A remoção dinâmica de arquivos também reduz conflitos de gravação. Quando o Delta Lake verifica conflitos durante um commit, ele considera arquivos que a remoção dinâmica de arquivos pulou. Isso reduz o número de transações com falha. Consulte Níveis de isolamento e conflitos de gravação.
Práticas recomendadas
O efeito no desempenho da remoção de arquivos dinâmicos correlaciona-se com a forma como os dados são agrupados em clusters. Se os valores em que você faz join estiverem espalhados por cada arquivo, a remoção dinâmica de arquivos ignora poucos arquivos. Para ajudar a remoção dinâmica de arquivos a ignorar mais arquivos, siga estas práticas:
- Use liquid clustering nas colunas que você usa com frequência para fazer join, de modo que as linhas correspondentes sejam colocadas em menos arquivos.
- Use o compute habilitado para Photon, que as instruções
MERGE,UPDATEeDELETEexigem para a remoção dinâmica de arquivos.
Configuração
A maioria das cargas de trabalho não precisa alterar essas configurações. Considere ajustar os limites se um join em uma tabela Delta Lake menor se beneficiar da remoção, mas ficar abaixo do default ou do limite de contagem de arquivos.
Estas propriedades de configuração do Apache Spark controlam a remoção dinâmica de arquivos:
Propriedade | Tipo | Padrão | Descrição |
|---|---|---|---|
|
|
| Ativa ou desativa a remoção dinâmica de arquivos. |
|
|
| O tamanho mínimo, em bytes, da tabela grande do Delta Lake no join que trigger a remoção dinâmica de arquivos. Para uma tabela menor, digitalizar a tabela inteira é geralmente mais barato do que aplicar os filtros. Para encontrar o tamanho de uma tabela Delta Lake, execução |
|
|
| O número mínimo de arquivos na grande tabela do Delta Lake no join que Trigger a remoção dinâmica de arquivos. Se a tabela tiver menos arquivos do que esse limite, a remoção dinâmica de arquivos não será executada, pois 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 |