hbase 跳转过滤器skipfilter
HBase 跳转 过滤器
2023-09-14 09:02:30 时间
用于跳过整个行键,需要和其他过滤器一起使用,本例SkipFilter和ValueFilter过滤器组合使用过滤不符合条件的行,
如果不配合SkipFiter,ValueFilter只过滤单元值包含的列。
private static void skipFilterData() throws IOException{ Table table = helper.getConnection().getTable(TableName.valueOf("demoTable")); Filter filter = new ValueFilter(CompareOperator.NOT_EQUAL,new BinaryComparator(Bytes.toBytes("val2"))); Scan scan = new Scan(); scan.setFilter(filter); ResultScanner scanner1 = table.getScanner(scan); System.out.println("Results of scan #1:"); int n = 0; for (Result result : scanner1) { for (Cell cell : result.rawCells()) { System.out.println("Cell: " + cell + ", Value: " + Bytes.toString(cell.getValueArray(), cell.getValueOffset(), cell.getValueLength())); n++; } } scanner1.close(); //应用跳转过滤 Filter skipFilter = new SkipFilter(filter); Scan scan2 = new Scan(); scan2.setFilter(skipFilter); ResultScanner scanner2 = table.getScanner(scan2); System.out.println("Total cell count for scan #1: " + n); n = 0; System.out.println("Results of scan #2:"); for (Result result : scanner2) { for (Cell cell : result.rawCells()) { System.out.println("Cell: " + cell + ", Value: " + Bytes.toString(cell.getValueArray(), cell.getValueOffset(), cell.getValueLength())); n++; } } scanner2.close(); System.out.println("Total cell count for scan #2: " + n); }
表中数据:
hbase(main):005:0> scan 'demoTable' ROW COLUMN+CELL row1 column=cf1:qual1, timestamp=5, value=row1_batch1 row1 column=cf1:qual2, timestamp=2, value=val2 row1 column=cf1:qual3, timestamp=3, value=val3 row1 column=cf2:qual1, timestamp=1, value=val1 row1 column=cf2:qual2, timestamp=5, value=row1_batch2 row1 column=cf2:qual3, timestamp=3, value=val3 row2 column=cf1:qual1, timestamp=1, value=val1 row2 column=cf1:qual3, timestamp=3, value=val3 row2 column=cf2:qual1, timestamp=1, value=val1 row2 column=cf2:qual2, timestamp=2, value=val2 row2 column=cf2:qual3, timestamp=3, value=val3 row3 column=cf1:qual1, timestamp=1, value=value1
输出结果:ValueFilter过滤只过滤某个Cell,配合SkipFilter过滤了整行数据
Cell: row1/cf1:qual1/5/Put/vlen=11/seqid=0, Value: row1_batch1 Cell: row1/cf1:qual3/3/Put/vlen=4/seqid=0, Value: val3 Cell: row1/cf2:qual1/1/Put/vlen=4/seqid=0, Value: val1 Cell: row1/cf2:qual2/5/Put/vlen=11/seqid=0, Value: row1_batch2 Cell: row1/cf2:qual3/3/Put/vlen=4/seqid=0, Value: val3 Cell: row2/cf1:qual1/1/Put/vlen=4/seqid=0, Value: val1 Cell: row2/cf1:qual3/3/Put/vlen=4/seqid=0, Value: val3 Cell: row2/cf2:qual1/1/Put/vlen=4/seqid=0, Value: val1 Cell: row2/cf2:qual3/3/Put/vlen=4/seqid=0, Value: val3 Cell: row3/cf1:qual1/1/Put/vlen=6/seqid=0, Value: value1 Total cell count for scan #1: 10 Results of scan #2: Cell: row3/cf1:qual1/1/Put/vlen=6/seqid=0, Value: value1 Total cell count for scan #2: 1
相关文章
- hbase 2.+版本集成zeppelin 0.8.2/0.9.1
- java连接hbase
- 大数据之Phonenix与Hbase集成
- HBase API
- Hbase(二)hbase建表详解大数据
- Hbase For Java详解大数据
- HBase-1.2.1之HRegionServer启动源码学习详解大数据
- HBase笔记详解大数据
- hbase遇到问题及解决方法详解大数据
- Hbase完全分布式集群安装配置(Hbase1.0.0,Hadoop2.6.0)详解大数据
- 深入浅出:从HBase导入至MySQL(hbase导入mysql)
- 如何在Linux上启动HBase?(linux启动hbase)
- 比较Mysql和Hbase:哪个数据库更适合你的数据系统?(mysqlhbase)
- Linux上安装Hbase教程(linuxhbase)
- HBase与Oracle 比较两款数据库的优缺点(hbase和oracle)
- Hbase与Oracle数据库深入比较(hbase与oracle)