開始
加載和管理數據
處理數據
政府
引用和資源
更新6月28日,2023年
給我們反饋
一個布隆過濾器索引是一個空間數據結構,使數據選擇列上跳過,特別是對於包含任意的文本字段。
布隆過濾器操作通過明確說明數據不是在文件,或者它是可能在文件,定義了一個假陽性概率(FPP)。
磚支持文件級的布魯姆過濾器;每個數據文件可以有一個布隆過濾器與之關聯的索引文件。在閱讀文件數據磚之前檢查索引文件和讀取文件隻有在該指數表明,文件可能匹配數據過濾。磚總是讀取數據文件如果索引不存在或者布隆過濾器不是為一個查詢列定義。
布隆過濾器的大小取決於元素數量的組創建了布隆過濾器和所需的FPP。FPP越低,每個元素使用的比特數越高,越精確,代價是更多的磁盤空間和慢下載。例如,一個FPP 10%需要5位/元素。
布隆過濾器指數是一個未壓縮的鑲花文件,其中包含單個行。存儲在索引_delta_index相對於數據文件和子目錄中使用相同的名稱作為數據文件的後綴index.v1.parquet。例如,數據文件的索引dbfs: / db1 / data.0001.parquet.snappy將命名為dbfs: / db1 / _delta_index / data.0001.parquet.snappy.index.v1.parquet。
_delta_index
index.v1.parquet
dbfs: / db1 / data.0001.parquet.snappy
dbfs: / db1 / _delta_index / data.0001.parquet.snappy.index.v1.parquet
布魯姆過濾器支持列以下數據類型(輸入):字節,短,int,長,浮動,雙,日期,時間戳,字符串。null不是添加到布隆過濾器,所以任何零相關濾波器需要讀取的數據文件。磚支持以下數據源的過濾器:和,或,在,=,equalsnullsafe。布魯姆過濾器是不支持在嵌套列。
字節
短
int
長
浮動
雙
日期
時間戳
字符串
和
或
在
=
equalsnullsafe
布魯姆過濾器是默認啟用。禁用布魯姆過濾器,設置會話水平spark.databricks.io.skipping.bloomFilter.enabled配置假。
spark.databricks.io.skipping.bloomFilter.enabled
假
布隆過濾器創建索引
布隆過濾器指數下降
顯示列表的索引,運行:
火花。表(“< table-with-indexes >”)。模式。foreach(場= >println(s”$ {場。的名字}:元數據=$ {場。元數據}”))
例如:
以下筆記本演示了如何定義一個布隆過濾器指數加速“海裏撈針”查詢。
在新標簽頁打開筆記本