Indici del filtro Bloom

Nota

Quando si usano risorse di calcolo abilitate per Photon e Databricks Runtime 12.2 o versioni successive, i filtri di I/O predittivi sbocciano per le prestazioni di lettura. Vedere Che cos'è l'I/O predittivo?.

In Databricks Runtime 13.3 e versioni successive Databricks consiglia di usare il clustering per il layout di tabella Delta. Vedere Usare il clustering liquido per le tabelle Delta.

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 in termini di spazio che consente di ignorare i dati sulle colonne scelte, in particolare per i campi contenenti 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 colonna non è definitivamente presente nel file o che probabilmente si trova 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 le colonne con i tipi di dati di input seguenti: byte, shortint, long, float, doubledate, , 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, inor, equals, e equalsnullsafe. I filtri Bloom non sono supportati nelle colonne nidificate.

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, impostare la configurazione a livello spark.databricks.io.skipping.bloomFilter.enabled di sessione su false.

Visualizzare l'elenco degli indici del filtro Bloom

Per visualizzare l'elenco degli indici, eseguire:

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

Ad esempio:

Mostra indici