Índices do filtro de bloom
Observação
Ao usar a computação habilitada para Photon e Databricks Runtime 12.2 ou superior, a E/S preditiva supera os filtros Bloom para desempenho de leitura. Confira O que é E/S preditiva?.
No Databricks Runtime 13.3 e em versões superiores, o Databricks recomenda utilizar o clustering para o layout de tabela Delta. Confira Usar clustering líquido para tabelas Delta.
A Databricks só recomenda usar os filtros Bloom ao usar a computação que não oferece suporte a esses recursos.
Um índice de filtro de Bloom é uma estrutura de dados que economiza espaço e permite ignorar dados em colunas escolhidas, especialmente para campos que contenham texto arbitrário.
Como funcionam os índices de filtro Bloom
Os índices do filtro Bloom do Azure Databricks consistem de um índice de omissão de dados para cada arquivo de dados. O índice do filtro Bloom pode ser usado para determinar que um valor de coluna definitivamente não está arquivo ou que ele provavelmente está no arquivo. Antes de ler um arquivo, o Azure Databricks verifica o arquivo de índice e o arquivo é lido somente se o índice indicar que o arquivo pode corresponder a um filtro de dados.
Os filtros Bloom oferecem suporte às colunas com os seguintes tipos de dados de entrada: byte
, short
, int
, long
, float
, double
, date
, timestamp
e string
. Nulos não são adicionados ao filtro de Bloom, portanto, qualquer filtro relacionado nulo requer a leitura do arquivo de dados. O Azure Databricks oferece suporte aos seguintes filtros de fonte de dados: and
, or
, in
, equals
e equalsnullsafe
. Não há suporte para filtros de Bloom em colunas aninhadas.
Configuração e referência
Use a sintaxe a seguir para habilitar um filtro Bloom:
CREATE BLOOMFILTER INDEX
ON TABLE table_name
FOR COLUMNS(column_name OPTIONS (fpp=0.1, numItems=5000))
Para obter detalhes da sintaxe, consulte CREATE BLOOM FILTER INDEX e DROP BLOOM FILTER INDEX.
Para desabilitar as operações do filtro Bloom, defina o nível de sessão spark.databricks.io.skipping.bloomFilter.enabled
configuração como false
.
Exibir a lista de índices do filtro de Bloom
Para exibir a lista de índices, execute:
spark.table("<table-with-indexes>").schema.foreach(field => println(s"${field.name}: metadata=${field.metadata}"))
Por exemplo: