码迷,mamicode.com
首页 > 其他好文 > 详细

HBase 查询过程中关于scan.setFilter和scan.addColumn的使用

时间:2014-12-24 17:45:34      阅读:371      评论:0      收藏:0      [点我收藏+]

标签:

在对HBase数据库的查询中,用到了SingleColumnValueFilter用于实现对于时间列中某一段时间记录的过滤,并且使用scan.addColumn获取结果中的某一列,

具体使用如下:

Scan scan = new Scan();  

List<Filter> filters = new ArrayList<Filter>();

String stime = “2012-12-16 00:00:00”;

String etime= “2012-12-16 00:00:10”;

Filter filter1 = new SingleColumnValueFilter(cfs[0].getNameAsString().getBytes(),
"rTime".getBytes(), CompareOp.GREATER_OR_EQUAL,Bytes.toBytes(stime)); 
filters.add(filter1);

Filter filter2 = new SingleColumnValueFilter(cfs[0].getNameAsString().getBytes(),
"rTime".getBytes(), CompareOp.LESS_OR_EQUAL,Bytes.toBytes(etime));
filters.add(filter2);

scan.setFilter(filterList1);
scan.addColumn(cfs[0].getNameAsString().getBytes(), "CARNO".getBytes());
ResultScanner rs = table.getScanner(scan);

但是在程序运行中发现,SingleColumnValueFilter设置的时间区间不起作用,返回的是全部的CARNO。但是在加入“scan.addColumn(cfs[0].getNameAsString().getBytes(), "rTime".getBytes());”后,查询结果正确。由此可见如果scan.addColumn中的列不包括在SingleColumnValueFilter中设置的列时,SingleColumnValueFilter是不起作用的。但是不明白这是为神马。。。。。

相同问题的博客:hbase scan中匪夷所思的SingleColumnValueFilter和COLUMNS

HBase 查询过程中关于scan.setFilter和scan.addColumn的使用

标签:

原文地址:http://www.cnblogs.com/nanxin521/p/4182738.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!