hive-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Prasanth Jayachandran (JIRA)" <>
Subject [jira] [Commented] (HIVE-9188) BloomFilter in ORC row group index
Date Wed, 07 Jan 2015 21:06:35 GMT


Prasanth Jayachandran commented on HIVE-9188:

The 0.05 fpp is guaranteed only at row index stride level that 10k rows by default. Merging
the bloom filter to higher levels (stripe,file) will increase the fpp keeping the size constant.
We will get worse fpp if we exceed the number of insertions in stripe level. We don't really
need the file level bloom filter as its not useful considering we have stripe level statistics.

If we have the bloom filter in row index we can read it in single IO per stripe. But we will
end up reading the bloom filters of columns that does not participate in bloom filter. On
the other hand if we have bloom filter as a separate stream we will end up with an extra IO
op per stripe to read the bloom filter. Also having it as separate stream has additional costs
(boolean flag in row index to know if we bloom filter for that column, position information).

> BloomFilter in ORC row group index
> ----------------------------------
>                 Key: HIVE-9188
>                 URL:
>             Project: Hive
>          Issue Type: New Feature
>          Components: File Formats
>    Affects Versions: 0.15.0
>            Reporter: Prasanth Jayachandran
>            Assignee: Prasanth Jayachandran
>              Labels: orcfile
>         Attachments: HIVE-9188.1.patch, HIVE-9188.2.patch, HIVE-9188.3.patch, HIVE-9188.4.patch
> BloomFilters are well known probabilistic data structure for set membership checking.
We can use bloom filters in ORC index for better row group pruning. Currently, ORC row group
index uses min/max statistics to eliminate row groups (stripes as well) that do not satisfy
predicate condition specified in the query. But in some cases, the efficiency of min/max based
elimination is not optimal (unsorted columns with wide range of entries). Bloom filters can
be an effective and efficient alternative for row group/split elimination for point queries
or queries with IN clause.

This message was sent by Atlassian JIRA

View raw message