Índices de filtro Bloom

Observação

Ao usar o site compute habilitado para Photon e o Databricks Runtime 12.2 ou acima, a E/S preditiva supera os filtros bloom para desempenho de leitura. Consulte O que é E/S preditiva?

No Databricks Runtime 13.3 e acima, o Databricks recomenda o uso clusters para disposição da tabela Delta. Consulte Usar clusters líquidos para tabelas Delta.

A Databricks só recomenda o uso de filtros Bloom ao usar o site compute que não oferece suporte a esses recursos.

Um índice de filtro Bloom é uma estrutura de dados eficiente em termos de espaço que permite ignorar dados em colunas escolhidas, especialmente para campos que contêm texto arbitrário.

Como funcionam os índices de filtro Bloom

Os índices de filtro Bloom do Databricks consistem em 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á no arquivo ou que provavelmente está no arquivo. Antes de ler um arquivo, o 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 suportam colunas com os seguintes tipos de dados de entrada: byte, short, int, long, float, double, date, timestamp e string. Os nulos não são adicionados ao filtro Bloom, portanto, qualquer filtro relacionado a nulos requer a leitura do arquivo de dados. A Databricks suporta os seguintes filtros de fonte de dados: and, or, in, equals e equalsnullsafe. Não há suporte para filtros Bloom em colunas aninhadas.

Configuração e referência

Use a seguinte sintaxe para ativar um filtro Bloom:

CREATE BLOOMFILTER INDEX
ON TABLE table_name
FOR COLUMNS(column_name OPTIONS (fpp=0.1, numItems=5000))

Para obter detalhes sobre a sintaxe, consulte CREATE BLOOM FILTER INDEX e DROP BLOOM FILTER INDEX.

Para desativar as operações do filtro Bloom, defina a configuração do nível de sessão spark.databricks.io.skipping.bloomFilter.enabled como false.

Exibir a lista de índices de filtro Bloom

Para exibir a lista de índices, execução:

spark.table("<table-with-indexes>").schema.foreach(field => println(s"${field.name}: metadata=${field.metadata}"))

Por exemplo:

Mostrar índices