Apache Impala VS bloomfilter

Compare Apache Impala vs bloomfilter and see what are their differences.

bloomfilter

BloomFilter implementation in Java that uses Murmur3 for fast hashing (by prasanthj)
Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
Apache Impala bloomfilter
1 1
1,079 11
1.8% -
9.7 0.0
5 days ago about 3 years ago
C++ Java
Apache License 2.0 Apache License 2.0
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

Apache Impala

Posts with mentions or reviews of Apache Impala. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2021-10-03.
  • Word-Aligned Bloom Filters
    5 projects | news.ycombinator.com | 3 Oct 2021
    > whether this would really work out in most workloads

    > just because it keeps the cache-lines hotter and less likely to be evicted.

    Okay, so keeping cache for a bloom filter problem is real - but the real force evicting memory out of the cache line is the next row-group you read + all the other stuff you have to do when you implement this in a database product.

    So the two things I work with, Apache Hive and Apache Impala switched to a blocked bloom filter at different points in time.

    Hive BloomKFilter - https://github.com/apache/hive/blob/master/storage-api/src/j...

    Impala/Kudu one - https://github.com/apache/impala/blob/master/be/src/kudu/uti...

    The C++ one also has an AVX specialization, while the Java one relies on the JVM to do it (not always) - https://github.com/apache/impala/blob/master/be/src/kudu/uti...

    We ran a lot of trivial benchmarks and several benchmarks where the shuffle-join (not sort-merge, this is just a partitioned hash join) generates a bloom filter (a semijoin) before sending rows out and the 1-cache line version won out when the bloom filter went slightly over the 1 Million + 5% rate [1].

    The regular bloom filter went from (38ns -> 108ns for 1k -> 1m items), while the BloomK stuck at (27ns) despite making room for a million times more items in the bloom. The bloom-1 (which is the 64bit version) underperformed on accuracy (was ~2x faster at 16ns per op, but worse at filtering out items).

    [1] - https://github.com/prasanthj/bloomfilter/tree/master/benchma...

bloomfilter

Posts with mentions or reviews of bloomfilter. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2021-10-03.
  • Word-Aligned Bloom Filters
    5 projects | news.ycombinator.com | 3 Oct 2021
    > whether this would really work out in most workloads

    > just because it keeps the cache-lines hotter and less likely to be evicted.

    Okay, so keeping cache for a bloom filter problem is real - but the real force evicting memory out of the cache line is the next row-group you read + all the other stuff you have to do when you implement this in a database product.

    So the two things I work with, Apache Hive and Apache Impala switched to a blocked bloom filter at different points in time.

    Hive BloomKFilter - https://github.com/apache/hive/blob/master/storage-api/src/j...

    Impala/Kudu one - https://github.com/apache/impala/blob/master/be/src/kudu/uti...

    The C++ one also has an AVX specialization, while the Java one relies on the JVM to do it (not always) - https://github.com/apache/impala/blob/master/be/src/kudu/uti...

    We ran a lot of trivial benchmarks and several benchmarks where the shuffle-join (not sort-merge, this is just a partitioned hash join) generates a bloom filter (a semijoin) before sending rows out and the 1-cache line version won out when the bloom filter went slightly over the 1 Million + 5% rate [1].

    The regular bloom filter went from (38ns -> 108ns for 1k -> 1m items), while the BloomK stuck at (27ns) despite making room for a million times more items in the bloom. The bloom-1 (which is the 64bit version) underperformed on accuracy (was ~2x faster at 16ns per op, but worse at filtering out items).

    [1] - https://github.com/prasanthj/bloomfilter/tree/master/benchma...

What are some alternatives?

When comparing Apache Impala and bloomfilter you can also consider the following projects:

ibis - the portable Python dataframe library

Apache Hive - Apache Hive

seed_rl - SEED RL: Scalable and Efficient Deep-RL with Accelerated Central Inference. Implements IMPALA and R2D2 algorithms in TF2 with SEED's architecture.

simdjson - Parsing gigabytes of JSON per second : used by Facebook/Meta Velox, the Node.js runtime, ClickHouse, WatermelonDB, Apache Doris, Milvus, StarRocks

machin - Reinforcement learning library(framework) designed for PyTorch, implements DQN, DDPG, A2C, PPO, SAC, MADDPG, A3C, APEX, IMPALA ...

bitcoinbook - Mastering Bitcoin 3rd Edition - Programming the Open Blockchain