Remoção de arquivo dinâmico
A remoção de arquivo dinâmico pode melhorar significativamente o desempenho de muitas consultas nas tabelas do Delta Lake. Gatilhos de poda de arquivo dinâmico para consultas que contêm instruções de filtro ou cláusulas de WHERE
. Você deve usar a computação habilitada para Photon para usar a remoção dinâmica de arquivos nas instruções MERGE
, UPDATE
e DELETE
. Somente as instruções SELECT
aproveitam a remoção dinâmica de arquivos quando o Photon não é usado.
A remoção de arquivo dinâmico é especialmente eficiente para tabelas não particionadas ou para junções em colunas não particionadas. O impacto no desempenho da remoção de arquivo dinâmico geralmente está correlacionado ao armazenamento em cluster de dados, portanto, considere usar a Ordenação Z para maximizar o benefício.
Para casos de uso e de plano de fundo de remoção de arquivo dinâmico, consulte Consultas SQL mais rápidas no Delta Lake com remoção de arquivo dinâmico.
Configuração
A remoção de arquivo dinâmico é controlada pelas seguintes opções de configuração do Apache Spark:
spark.databricks.optimizer.dynamicFilePruning
(o padrão étrue
): o sinalizador principal que direciona o otimizador para enviar filtros para baixo. Quando definido comofalse
, a remoção de arquivo dinâmico 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 investigação da junção necessária para disparar a remoção de arquivo dinâmico. Se o lado da investigação não for muito grande, provavelmente não vale a pena efetuar push dos filtros e podemos simplesmente examinar a tabela inteira. Você pode encontrar o tamanho de uma tabela do Delta executando o comandoDESCRIBE DETAIL table_name
e, em seguida, observando a colunasizeInBytes
.spark.databricks.optimizer.deltaTableFilesThreshold
(o padrão é10
): representa o número de arquivos da tabela Delta no lado da investigação da junção exigida para disparar a poda dinâmica de arquivos. Quando a tabela lateral da investigação contiver menos arquivos do que o valor limite, a remoção de arquivo dinâmico não será disparada. Se uma tabela contiver apenas alguns arquivos, provavelmente não valerá a pena habilitar a remoção de arquivo dinâmico. Você pode encontrar o tamanho de uma tabela do Delta executando o comandoDESCRIBE DETAIL table_name
e, em seguida, observando a colunanumFiles
.