Indici di filtro Bloom
Nota
Quando si usano risorse di calcolo abilitate per Photon e Databricks Runtime 12.2 o versioni successive, l'I/O predittivo supera i filtri di Bloom in termini di prestazioni di lettura. Consulta Che cos'è l'I/O predittivo?.
In Databricks Runtime 13.3 e versioni successive Databricks consiglia di usare il clustering per il layout delta table. Consultare Usare il clustering liquido per Delta tables.
Databricks consiglia di usare solo i filtri Bloom quando si usano risorse di calcolo che non supportano queste funzionalità.
Un indice di filtro Bloom è una struttura di dati efficiente nello spazio che consente di saltare i dati sui columnsscelti, in particolare per i campi contenenti qualsiasi testo arbitrario.
Funzionamento degli indici di filtro Bloom
Gli indici di filtro di Azure Databricks Bloom sono costituiti da un indice di salto dei dati per ogni file di dati. L'indice del filtro Bloom può essere usato per determinare che un valore di column è definitivamente non nel file, o che sia forse nel file. Prima di leggere un file, Azure Databricks controlla il file di indice e il file viene letto solo se l'indice indica che il file potrebbe corrispondere a un filtro dati.
I filtri Bloom supportano columns con i tipi di dati di input seguenti: byte
, short
, int
, long
, float
, double
, date
, timestamp
e string
. I valori Null non vengono aggiunti al filtro Bloom, quindi qualsiasi filtro correlato a Null richiede la lettura del file di dati. Azure Databricks supporta i filtri di origine dati seguenti: and
, or
, in
, equals
e equalsnullsafe
. I filtri Bloom non sono supportati nei columnsannidati.
Configurazione e riferimento
Usare la sintassi seguente per abilitare un filtro Bloom:
CREATE BLOOMFILTER INDEX
ON TABLE table_name
FOR COLUMNS(column_name OPTIONS (fpp=0.1, numItems=5000))
Per informazioni dettagliate sulla sintassi, vedere CREATE BLOOM FILTER INDEX e DROP BLOOM FILTER INDEX.
Per disabilitare le operazioni di filtro Bloom, set la configurazione a livello di sessione spark.databricks.io.skipping.bloomFilter.enabled
a false
.
Visualizza il list degli indici del filtro di Bloom
Per visualizzare il list degli indici, esegui:
spark.table("<table-with-indexes>").schema.foreach(field => println(s"${field.name}: metadata=${field.metadata}"))
Per esempio: