开始
加载和管理数据
处理数据
政府
引用和资源
2023年8月1日更新
给我们反馈
一个布隆过滤器索引是一个空间数据结构,使数据选择列上跳过,特别是对于包含任意的文本字段。
请注意
在砖运行时的13.2及以上,砖建议使用集群为三角洲表布局。看到使用液体集群为三角洲表。
布隆过滤器操作通过明确说明数据不是在文件,或者它是可能在文件,定义了一个假阳性概率(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”$ {场。的名字}:元数据=$ {场。元数据}”))
例如:
下面的笔记本演示了定义一个布隆过滤器指数加速“海里捞针”查询。
在新标签页打开笔记本