Eliminação dinâmica de ficheiros

A poda dinâmica de ficheiros pode melhorar significativamente o desempenho de muitas consultas nas tabelas Delta Lake. O otimizador de consultas ativa a poda dinâmica de ficheiros para consultas que contêm instruções de filtro ou cláusulas WHERE. A eliminação dinâmica de ficheiros nas instruções MERGE, UPDATE e DELETE requer computação com Photon ativado. Para as SELECT instruções, o Photon fornece uma poda dinâmica de ficheiros mais ampla e fiável. Sem o Photon, a poda dinâmica de ficheiros pode continuar a aplicar-se a instruções SELECT, dependendo da estrutura da consulta e do plano de execução.

A remoção dinâmica de arquivos é especialmente eficiente para tabelas não particionadas ou para junções em colunas não particionadas. O efeito de desempenho da poda dinâmica de ficheiros está frequentemente correlacionado com o agrupamento dos dados, por isso considere usar agrupamento líquido para maximizar o benefício. Veja Utilizar clustering líquido para tabelas.

Para contextos e casos de uso de poda dinâmica de arquivos, consulte consultas SQL mais rápidas no Delta Lake com poda dinâmica de arquivos.

Configuração

A remoção dinâmica de arquivos é controlada pelas seguintes opções de configuração do Apache Spark:

  • spark.databricks.optimizer.dynamicFilePruning (padrão é true): O indicador principal que direciona o otimizador para aplicar filtros. Quando definido como false, a remoção dinâmica de arquivos não estará em vigor.
  • spark.databricks.optimizer.deltaTableSizeThreshold (o padrão é 10,000,000,000 bytes (10 GB)): Representa o tamanho mínimo (em bytes) da tabela Delta no lado da sonda da junção necessária para acionar a remoção dinâmica de arquivos. Se o lado da sonda não for muito grande, provavelmente não vale a pena empurrar os filtros para baixo e podemos simplesmente digitalizar toda a mesa. Você pode encontrar o tamanho de uma tabela Delta executando o comando DESCRIBE DETAIL table_name e, em seguida, examinando a coluna sizeInBytes.
  • spark.databricks.optimizer.deltaTableFilesThreshold (o padrão é 10): Representa o número de arquivos da tabela Delta no lado da sonda da junção necessária para acionar a remoção dinâmica de arquivos. Quando a tabela lateral da sonda contém menos arquivos do que o valor limite, a remoção dinâmica de arquivos não é acionada. Se uma tabela tiver apenas alguns arquivos, provavelmente não vale a pena habilitar a remoção dinâmica de arquivos. Você pode encontrar o tamanho de uma tabela Delta executando o comando DESCRIBE DETAIL table_name e, em seguida, examinando a coluna numFiles.