Bagikan melalui


Indeks Bloom filter

Nota

Saat menggunakan komputasi dengan dukungan Photon dan Databricks Runtime 12.2 atau lebih tinggi, I/O prediktif mengungguli filter Bloom untuk performa baca. Lihat Apa itu I/O prediktif?.

Di Databricks Runtime 13.3 ke atas, Databricks merekomendasikan penggunaan pengklusteran untuk tata letak tabel Delta. Lihat Menggunakan pengklusteran cair untuk tabel.

Databricks hanya merekomendasikan penggunaan filter Bloom saat menggunakan komputasi yang tidak mendukung fitur-fitur ini.

Indeks filter Bloom adalah struktur data hemat spasi yang memungkinkan data melompati kolom yang dipilih, terutama untuk bidang yang berisi teks arbitrer.

Cara kerja indeks filter Bloom

Indeks filter Azure Databricks Bloom terdiri dari indeks lompati data untuk setiap file data. Indeks filter Bloom dapat digunakan untuk menentukan bahwa nilai kolom secara definitif tidak dalam file, atau bahwa itu mungkin dalam file. Sebelum membaca file Azure Databricks memeriksa file indeks, dan file hanya dibaca jika indeks menunjukkan bahwa file mungkin cocok dengan filter data.

Filter Bloom mendukung kolom dengan jenis data input berikut: byte, short, int, long, float, double, date, timestamp, dan string. Null tidak ditambahkan ke filter Bloom, sehingga filter terkait null memerlukan pembacaan file data. Azure Databricks mendukung filter sumber data berikut: and, or, in, equals, dan equalsnullsafe. Filter Bloom tidak didukung pada kolom bertingkat.

Konfigurasi dan referensi

Gunakan sintaks berikut untuk mengaktifkan filter Bloom:

CREATE BLOOMFILTER INDEX
ON TABLE table_name
FOR COLUMNS(column_name OPTIONS (fpp=0.1, numItems=5000))

Untuk detail sintaks, lihat CREATE BLOOM FILTER INDEX dan DROP BLOOM FILTER INDEX.

Untuk menonaktifkan operasi filter Bloom, atur konfigurasi tingkat sesi spark.databricks.io.skipping.bloomFilter.enabled ke false.

Menampilkan daftar indeks filter Bloom

Untuk menampilkan daftar indeks, jalankan:

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

Misalnya:

Tampilkan indeks