Bloom filtre dizinleri

Not

Foton özellikli işlem ve Databricks Runtime 12.2 veya üzerini kullanırken tahmine dayalı G/Ç, okuma performansı için bloom filtrelerinden daha iyi performans gösterir. Bkz. Tahmine dayalı G/Ç nedir?.

Databricks Runtime 13.3 ve üzeri sürümleri için Databricks, Delta tablo düzeni için kümeleme kullanılmasını önerir. Bkz. Delta tabloları için sıvı kümeleme kullanma.

Databricks, bu özellikleri desteklemeyen işlem kullanılırken yalnızca Bloom filtrelerinin kullanılmasını önerir.

Bloom filtre dizini, özellikle rastgele metin içeren alanlar için seçilen sütunlarda verilerin atlanması için alan açısından verimli bir veri yapısıdır.

Bloom filtre dizinleri nasıl çalışır?

Azure Databricks Bloom filtre dizinleri, her veri dosyası için bir veri atlama dizininden oluşur. Bloom filtre dizini, bir sütun değerinin kesin olarak dosyada olmadığını veya büyük olasılıkla dosyada olduğunu belirlemek için kullanılabilir. Bir dosyayı okumadan önce Azure Databricks dizin dosyasını denetler ve dizin dosyanın bir veri filtresiyle eşleşebileceğini gösteriyorsa dosya salt okunur olur.

Bloom filtreleri, şu giriş veri türlerine sahip sütunları destekler: byte, short, int, long, float, , doubledate, timestampve string. Null değerler Bloom filtresine eklenmez, bu nedenle null ile ilgili herhangi bir filtre veri dosyasının okunmasını gerektirir. Azure Databricks şu veri kaynağı filtrelerini destekler: and, or, in, equalsve equalsnullsafe. Bloom filtreleri iç içe sütunlarda desteklenmez.

Yapılandırma ve başvuru

Bloom filtresini etkinleştirmek için aşağıdaki söz dizimini kullanın:

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

Söz dizimi ayrıntıları için bkz . CREATE BLOOM FILTER INDEX ve DROP BLOOM FILTER INDEX.

Bloom filtre işlemlerini devre dışı bırakmak için oturum düzeyi spark.databricks.io.skipping.bloomFilter.enabled yapılandırmasını olarak falseayarlayın.

Bloom filtre dizinlerini görüntüleme

Dizin listesini görüntülemek için şunu çalıştırın:

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

Örneğin:

Dizinleri göster