Partilhar via


Índices de filtro Bloom

Nota

Ao usar a computação habilitada para Photon e o Databricks Runtime 12.2 ou superior, a E/S preditiva supera os filtros bloom para desempenho de leitura. Consulte O que é E/S preditiva?.

No Databricks Runtime 13.3 e superior, o Databricks recomenda o uso de clustering para layout de tabela Delta. Veja Utilizar clustering líquido para tabelas Delta.

O Databricks só recomenda o uso de filtros Bloom ao usar computação que não suporta esses recursos.

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

Como funcionam os índices de filtro Bloom

Os índices de filtro do Azure Databricks Bloom consistem em um índice de pulo de dados para cada arquivo de dados. O índice de filtro Bloom pode ser usado para determinar se um valor de coluna definitivamente não está no arquivo ou que 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 suportam colunas com os seguintes tipos de dados de entrada: byte, short, int, long, float, datedouble, timestamp, e string. Nulos não são adicionados ao filtro Bloom, portanto, qualquer filtro relacionado a nulos requer a leitura do arquivo de dados. O Azure Databricks dá suporte aos seguintes filtros de fonte de dados: and, or, in, equalse equalsnullsafe. Os filtros Bloom não são suportados 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 de sintaxe, consulte CREATE BLOOM FILTER INDEX e DROP BLOOM FILTER INDEX.

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

Apresentar a lista de índices de filtros do 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:

Mostrar índices