HBase中RowFilter和BloomFilter原理
1)RowFilter原理简析

RowFilter顾名思义就是对rowkey进行过滤,那么rowkey的过滤无非就是相等(EQUAL)、大于(GREATER)、小于(LESS),大于等于(GREATER_OR_EQUAL),小于等于(LESS_OR_EQUAL)和不等于(NOT_EQUAL)几种过滤方式。Hbase中的RowFilter采用比较符结合比较器的方式来进行过滤。

比较器的类型如下:

  • BinaryComparator
  • BinaryPrefixComparator
  • NullComparator
  • BitComparator
  • RegexStringComparator
  • SubStringComparator

例子:

Filter rowFilter = new RowFilter(CompareFilter.CompareOp.EQUAL, new BinaryComparator(Bytes.toBytes(rowKeyValue)));
Scan scan = new Scan();
scan.setFilter(rowFilter)
...

在上面例子中,比较符为EQUAL,比较器为BinaryComparator

2)BloomFilter原理简析
  • 主要功能:提供随机读的性能
  • 存储开销:BloomFilter是列族级别的配置,一旦表格中开启BloomFilter,那么在生成StoreFile时同时会生成一份包含BloomFilter结构的文件MetaBlock,所以会增加一定的存储开销和内存开销
  • 粒度控制:ROW和ROWCOL
  • BloomFilter的原理
    简单说一下BloomFilter原理
    • 内部是一个bit数组,初始值均为0
    • 插入元素时对元素进行hash并且映射到数组中的某一个index,将其置为1,再进行多次不同的hash算法,将映射到的index置为1,同一个index只需要置1次。
    • 查询时使用跟插入时相同的hash算法,如果在对应的index的值都为1,那么就可以认为该元素可能存在,注意,只是可能存在
    • 所以BlomFilter只能保证过滤掉不包含的元素,而不能保证误判包含
  • 设置:在建表时对某一列设置BloomFilter即可
更多精选文章
标签: rowfilter、bloomfilter、equal、binarycomparator、scan
一个创业中的苦逼程序员
笔试题


刷题


简历模板


AI算法


大数据


内推


推荐阅读:
阿里巴巴笔试面试大全
腾讯笔试面试大全
百度笔试面试大全
今日头条笔试面试大全
网易笔试面试大全
Google笔试面试大全
更多笔试面试大全
隐藏