Índices de filtro Bloom
Ao usar compute habilitado para Photon e Databricks Runtime 12.2 ou acima, a E/S preditiva supera os filtros bloom para desempenho de leitura. Consulte O que é E/S preditiva? .
Em Databricks Runtime 13.3 e acima, Databricks recomenda o uso de clustering para Delta disposição da tabela. Consulte Usar clustering líquido para tabelas Delta.
Databricks recomenda apenas 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 com eficiência de espaço que permite pular dados em colunas escolhidas, especialmente para campos contendo texto arbitrário.
Como funcionam os índices de filtro Bloom
Os índices de filtro de 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 se o valor de uma coluna definitivamente não está no arquivo ou se 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 exige a leitura do arquivo de dados. Databricks suporta os seguintes filtros de fonte de dados: and
, or
, in
, equals
e equalsnullsafe
. Os filtros Bloom não são suportados em colunas aninhadas.
Configuração e referência
Use a sintaxe a seguir 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 de sintaxe, consulte CREATE BLOOM FILTER INDEX e DROP BLOOM FILTER INDEX.
Para desativar as operações do filtro Bloom, defina a configuração de nível de sessão spark.databricks.io.skipping.bloomFilter.enabled
como false
.
Exibir a lista de índices do 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: