1.结构过滤器–FilterList
FilterList代表一个过滤器链,他可以包含一组即将应用于目标数据集的过滤器,过滤器具有与“FilterList.Operator.MuST_PASS_ALL”和或“FilterList.Operator.MUST_PASS_ONE”关系
FilterList list=new FilterList(FilterList.Operator.MUST_PASS_ONE);//数据只要瞒足一组过滤器中的一个就可以
SingleColumnValueFileter filter1=new SingleColumnValueFilter(
cf,
column,
CompareOp.EQUAL,
Bytes.toBytes(“my value”)
);
list.add(filter1);
SingleColumnValueFilter filter2=new SingleColumnValueFilter(
cf,
column,
CompareOp.EQUAL,
Bytes.toBytes(“my other value”)
);
list.add(filter2);
Scan scan=new Scan();
scan.setFilter(list);
(2)比较器 ByteArrayComparable
1.BinaryComparator 匹配完整字节数组
2.BinaryPrefixComparator 匹配字节数组前缀
3.BitComparator
4.NullComparator
5.RegexStringConparator 正则表达式匹配
6.SubstringComparator 子串匹配
2–列值过滤器–SingleColumnValueFilter
SingleColumnValueFilter.用于测试列值相等(CompareOp.EQUAL),不等(CompareOp.NOT_EQUAL),或单侧范围(e.g,CompareOp.GREATER).
1.比较的关键字是一个字符数组
SingleColumnValueFilter(byte[] family,byte[] qualifier,CompareFilter.CompareOp compareOp,byte []value)
2.比较的关键字是一个比较器(比较器下一节做介绍)
SingleColumnValueFilter(byte[] family)
3.键值元数据
由于HBase采用键值对保存内部数据,键值元数据过滤器评估一行的键(ColumnFamily: Qualifiers)是否存在,对应
基于多个列名(即Qualifier)前缀过滤数据的MultipleColumnPrefixFilter
MultipleColumnPrefixFilter 和 ColumnPrefixFilter 行为差不多,但可以指定多个前缀。
6.SkipFilter
根据整行的每个列来做过滤,只要存在一列不满足条件,整行都被过滤掉。
在这个情况下,我们结合ValueFilter和skipFilterr共同使用达到目的:
Utility–FirstKeyOnlyFilter
该过滤器仅仅返回每一行的第一个cell的值,可以用于高效的执行行数统计操作。
构造函数:
public FirstKeyOnlyFilter()
5.PageFilter
Connection对象
创建好配置Configuration对象后,创建Connection连接对象,建立和HBase数据库的连接(过程其实和关系型数据连接配置过程相似)
Connection connection=ConnectionFactory.createConnection(config);
Admin对象
最后创建Admin对象即客户端管理对象,其后的HBase数据库操作基本全是由Admin发出。
注意:connection和admin均占用系统资源,在使用完以后一定注意使用close方法关闭资源,以免造成资源短缺。
二.判断表名是否存在
使用HBase API中的tableExists()方法查看获取boolean值完成表是否存在的判断。
三、若不存在HTableDescriptor对象和HColumnDescriptor对象,新建HColumnDescriptor对象加入cf列族(可使用for循环加入多个列族),将HColumnDescriptor对象通过addFamily方法假如到HTableDescriptor对象中,最后使用Hbase Api中的create table方法完成表的创建。
四。删除表、
首先判断表是否不存在,若不存在则直接返回,若存在则调用HBase API中的disable Table方法和delete Table 方法完成表的删除。主要一定要先disable掉表再deleteTable,否则会直接报错。
五、增加/更新表数据
注意更新数据在HBase中是增加一条数据,只是这条数据的版本更高一点。同时在HBase中数据都是以byte[]字节数组的形式存储的,因此需要通过Bytes.toBytes方法进行数据类型转换。
七.全表扫描scan
创建table对象,创建scan对象,以scan对象为参数通过table对象的getScanner方法获取全表扫描集合ResultScanner对象(一个集合),通过for循环获取scanner对象的cell数组(行键:列族:列:版本号)和row(byte[]字节数组类型)(对Results集合遍历后或得的Result数组同样可拆分的rowkey和cell数组,本身也是一个集合)。
过滤器:
1.结构过滤器–FilterList
2.列值过滤器–SingleColumnValueFlter
2.1.第一种构造函数情况–比较的关键字是字符数组
2.2.第二种构造函数情况–比较的关键字是比较器ByteArrayComparable
3.键值元数据
3.1.基于列族过滤器数据的FamilyFilter
3.2.基于限定符Qualifiter(列)过滤器QuaalifierFilter
3.3.基于列名(即Qualifier)前缀过滤数据的ColumnPrefixFilter
3.4.基于多个列名(即Qualifier)前缀过滤数据的MultIPleColumnPrefixFilter
3.5.基于列范围(不是行范围)过滤数据ColumnRangeFilter
4.RowKey
5.PageFilter
6.SkipFilter
7.Utility–FirstKeyOnlyFilter
参数基础
(1).比较运算符 CompareFilter.CompareOp
(2).比较器 ByteArrayComparable
1.BinaryConmparator 匹配完整字节数组
2.BinaryPrefixComparator 匹配字节数组前缀
3.BitComparator
4.NullComparator
5.RegexStringComparator 正则表达式匹配
6.SubstringComparator 子串匹配