Nota
L'accés a aquesta pàgina requereix autorització. Pots provar d'iniciar sessió o canviar de directori.
L'accés a aquesta pàgina requereix autorització. Pots provar de canviar directoris.
Un índice de filtro Bloom es una estructura de datos eficiente en el espacio que permite omitir datos en columnas elegidas. Es especialmente eficaz para las columnas con muchos valores distintos, como texto de forma libre o identificadores.
Limitaciones de los índices de filtro Bloom
Important
Azure Databricks no recomienda usar índices de filtro bloom para la mayoría de las cargas de trabajo.
Aunque los índices de Filtro Bloom admiten el salto de datos en columnas con alta cardinalidad de valores únicos, a menudo presentan problemas como los siguientes:
- Solo indexan los archivos escritos después de crear el índice. Los índices no se aplican a los archivos existentes.
- Son difíciles de ajustar y a menudo agregan sobrecarga sin una ventaja significativa de rendimiento.
- Funcionan mejor con filtros de igualdad altamente selectivos en una sola columna. Proporcionan poco o ninguna ventaja para filtros más amplios.
- Los índices de filtro bloom solo funcionan en columnas definidas explícitamente. Si las consultas comienzan a filtrar por columnas que no se superponen con las columnas de índice de filtro Bloom, debe eliminar el índice y recrearlo manualmente, lo que añade una sobrecarga operativa. También necesita reconstruir el nuevo índice desde cero con los nuevos datos.
Aunque los índices de Filtro Bloom tienen como objetivo omitir las lecturas de archivos, Azure Databricks todavía debe examinar el archivo de índice de cada archivo de datos. El orden Z y la agrupación en clústeres líquidos son más eficaces porque permiten que el motor evite considerar la mayoría de los archivos.
Alternativas recomendadas
Azure Databricks recomienda usar las siguientes características en lugar de los índices de filtro bloom:
- E/S predictiva - en cómputo habilitado para Photon con Databricks Runtime 12.2 y versiones posteriores, la E/S predictiva realiza la omisión de archivos en todas las columnas mediante heurísticas avanzadas. Engloba por completo los índices Bloom de filtro, que solo agregan sobrecarga de escritura cuando se habilita Photon.
- Agrupación en clústeres líquidos En Databricks Runtime 13.3 y versiones posteriores, la agrupación en clústeres líquidos mejora la omisión de datos mediante la organización de datos en función de las columnas filtradas con frecuencia. Funciona en una granularidad más gruesa que los índices de filtro Bloom y permite a Azure Databricks omitir grupos completos de archivos durante la planificación de consultas.
Important
Evite combinar índices de filtro Bloom con E/S predictiva. Cuando ambos están habilitados, los índices de filtro bloom tienen prioridad y deshabilitan la E/S predictiva, lo que ofrece un rendimiento más rápido y confiable.
Funcionamiento de los índices de filtro Bloom
Los índices de filtro de Bloom de Azure Databricks constan de un índice de omisión de datos para cada archivo de datos. El índice de filtro bloom se puede usar para determinar que un valor de columna no está definitivamente en el archivo o que probablemente esté en el archivo. Antes de leer un archivo, Azure Databricks comprueba el archivo de índice y el archivo solo se lee si el índice indica que el archivo podría coincidir con un filtro de datos.
Los índices de filtro Bloom admiten columnas con los siguientes tipos de datos de entrada: byte, short, int, long, float, double, date, timestamp y string. Los valores NULL no se agregan al índice de filtro bloom, por lo que cualquier filtro relacionado con NULL requiere leer el archivo de datos. Azure Databricks admite los siguientes filtros de origen de datos: and, or, in, equalsy equalsnullsafe. Los índices de filtro Bloom no se admiten en columnas anidadas.
Configuración y referencia
Use la sintaxis siguiente para habilitar un filtro bloom:
CREATE BLOOMFILTER INDEX
ON TABLE table_name
FOR COLUMNS(column_name OPTIONS (fpp=0.1, numItems=5000))
Para obtener más información sobre la sintaxis, vea CREATE BLOOM FILTER INDEX y DROP BLOOM FILTER INDEX.
Para deshabilitar las operaciones del filtro Bloom, establezca la configuración de nivel de sesión en spark.databricks.io.skipping.bloomFilter.enabled.
Mostrar la lista de índices de filtro Bloom
Para mostrar la lista de índices, ejecute:
spark.table("<table-with-indexes>").schema.foreach(field => println(s"${field.name}: metadata=${field.metadata}"))
Por ejemplo: