Partilhar via


Índices de filtro Bloom

Observação

Ao usar a computação compatível com Photon e o Databricks Runtime 12.2 ou superior, a E/S preditiva supera os filtros Bloom no desempenho de leitura. Consulte O que é E/S preditiva?.

No Databricks Runtime 13.3 ou versões posteriores, a Databricks recomenda o uso de clustering para o layout das tabelas Delta. Consulte Usar agrupamento 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 está definitivamente não está em o arquivo, ou que ele é provavelmente em o 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, double, date, timestampe 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, definir a configuração de 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, execute:

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

Por exemplo:

Mostrar índices