为什么bloom过滤器不起作用,请告诉我



我有两个表:带布隆过滤器的原始表和新表。为int列(CLUSTERED BY和'orc.Bloom.filter.columns'(创建了Bloom筛选器。在分区的hdfs中,我看到文件数=唯一值数​​列中。但是当我查询时(从id=…的表中选择min(…((这些表,请求在同一时间内完成执行。在作业日志和"解释分析"中,我没有看到使用bloom过滤器,请求读取整个分区。还需要配置什么才能使bloom过滤器工作,更快地执行请求,并且不是读取分区中的所有文件,而是只读取一个具有所需id的文件?

Bloom过滤器并非在所有情况下都有帮助。

ORC包含文件级、条带级和行级的索引(10000行,可配置(如果配置了PPD,索引(最小值、最大值(可以用于跳过读取文件(页脚部分无论如何都会被读取(,条纹也可以被跳过这些索引对于筛选可排序的序列值和范围查询非常有用类似于整数为了提高索引的效率,您应该在插入时按索引键对数据进行排序。由于所有条带都可以包含所有键,因此未排序索引的效率不高。

插入过程中的排序可能很昂贵。

在大多数情况下,只有索引就足够了。

Bloom过滤器是一种结构,可以帮助以100%的概率检查数据集中是否不存在密钥。

Bloom过滤器对于相等查询非常有效,尤其是对于非连续的未排序值(如GUID(。对于这样的值,MIN/MAX索引不能有效地工作。使用Bloom筛选器时,按特定GUID进行筛选应该非常有效。

对于像integer id这样的可排序序列值,存储在ORC索引(已排序(中的最小/最大值更好。

最新更新