HBase 提供了多种过滤器,允许基于行键、列族、列名或列值来过滤数据。
- RowFilter(行键过滤器)
根据行键进行过滤,可以指定条件(如大于、小于等)。
示例:查询所有键值对大于 1002 的数据。
scan 'student', {FILTER => "RowFilter(>, 'binary:1002')"}
- PrefixFilter(行前缀过滤器)
基于行键的前缀进行过滤,只返回行键以指定前缀开头的数据。
示例:查询所有行键以 100 开头的数据。
scan 'student', {FILTER => "PrefixFilter('100')"}
- FamilyFilter(列族过滤器)
基于列族进行过滤,只返回指定列族的数据。
示例:查询列族为 info2 的所有数据。
scan 'student', {FILTER => "FamilyFilter(=, 'binary:info2')"}
- QualifierFilter(列名过滤器)
基于列名(限定符)进行过滤,只返回匹配指定列名的数据。
示例:查询列名为 phone 的所有数据。
scan 'student', {FILTER => "QualifierFilter(=, 'binary:phone')"}
- SingleColumnValueFilter(单列值过滤器)
基于某列的值进行过滤,只有该列满足条件的行才会被返回。
示例:查询年龄列值为 19 的数据。
scan 'student', {FILTER => "SingleColumnValueFilter('info1', 'age', =, 'binary:19')"}
- ValueFilter(值过滤器)
基于值内容进行过滤,适用于值中包含指定内容的数据。
示例:查询值包含 123 的所有数据。
scan 'student', {FILTER => "ValueFilter(=, 'substring:123')"}
- FirstKeyOnlyFilter(只返回每行第一个键值对)
在扫描时,只返回每行的第一个键值对。
示例:只显示每行的第一个键值对。
scan 'student', {FILTER => "FirstKeyOnlyFilter()"}