hbase行键过滤器RowFilter

来源:互联网 发布:linux mv 强制覆盖 编辑:程序博客网 时间:2024/06/05 03:41
RowFilter是用来对rowkey进行过滤的,比较符如下:

Operator

Description

LESS

小于

LESS_OR_EQUAL

小于等于

EQUAL

等于

NOT_EQUAL

不等于

GREATER_OR_EQUAL

大于等于

GREATER

大于

NO_OP

排除所有



Comparator

Description

BinaryComparator

使用Bytes.compareTo()比较

BinaryPrefixComparator

BinaryComparator差不多,从前面开始比较

NullComparator

Does not compare  against an actual value but whether a given one is null, or  not null.

BitComparator

Performs a bitwise  comparison, providing a BitwiseOp class with AND, OR,  and XOR operators.

RegexStringComparator

正则表达式

SubstringComparator

把数据当成字符串,用contains()来判断





下面是相关比较符的例子

点击(此处)折叠或打开

  1. package com.hxl;

  2. import java.io.IOException;
  3. import org.apache.hadoop.conf.Configuration;
  4. import org.apache.hadoop.hbase.Cell;
  5. import org.apache.hadoop.hbase.CellUtil;
  6. import org.apache.hadoop.hbase.KeyValue;
  7. import org.apache.hadoop.hbase.client.HTable;
  8. import org.apache.hadoop.hbase.client.Result;
  9. import org.apache.hadoop.hbase.client.ResultScanner;
  10. import org.apache.hadoop.hbase.client.Scan;
  11. import org.apache.hadoop.hbase.filter.BinaryComparator;
  12. import org.apache.hadoop.hbase.filter.CompareFilter;
  13. import org.apache.hadoop.hbase.filter.Filter;
  14. import org.apache.hadoop.hbase.filter.RowFilter;
  15. import org.apache.hadoop.hbase.util.Bytes;

  16. import com.hxl.ConnectDB;

  17. public class RowFilterTest {

  18.     publicvoid rowfilter(String tablename,String rowkeyvalue){
  19.         Configurationconfiguration = null;
  20.         configuration= new ConnectDB().getConf();

  21.         try{
  22.             HTable table= new HTable(configuration, tablename);

  23.             Filter filter1= new RowFilter(CompareFilter.CompareOp.EQUAL,
  24.                     new BinaryComparator(Bytes.toBytes(rowkeyvalue)));
  25.             // EQUAL =

  26.             Scan s =new Scan();
  27.             s.setFilter(filter1);
  28.             ResultScanner rs =table.getScanner(s);

  29.             for(Result r: rs){
  30.                 System.out.println("rowkey:"+ new String(r.getRow()));
  31.                 for(KeyValue keyValue: r.raw()){
  32.                     System.out.println("列族:"+ new String(keyValue.getFamily())
  33.                             +" 列:" + new String(keyValue.getQualifier())+ ":"
  34.                             +new String(keyValue.getValue()));
  35.                 }
  36.             }

  37.         }catch (IOException e){
  38.             // TODO Auto-generated catch block
  39.             e.printStackTrace();

  40.         }

  41.     }

  42. }

相关的过滤方法使用:
提取rowkey以01结尾数据
Filter filter = new RowFilter(CompareFilter.CompareOp.EQUAL,new RegexStringComparator(".*01$"));

提取rowkey以包含201407的数据

Filter filter = new RowFilter(CompareFilter.CompareOp.EQUAL,new SubstringComparator("201407"));


提取rowkey以123开头的数据
Filter filter = new RowFilter(CompareFilter.CompareOp.EQUAL,new BinaryPrefixComparator("123".getBytes()));


-- The End --
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 初中学校说处分不给毕业证怎么办? 自动档一键打火的车没电了怎么办 物流代收货款一直拿不到钱怎么办 丰巢快递柜收不到验证码怎么办 拼多多三级惩罚下架3天怎么办 在万达买的衣服穿一次烂了怎么办 内蒙古对于没有地的农民改怎么办 微信号码重新注册后回零钱怎么办 安卓系统文件苹果手机打不开怎么办 课题必须发表论文吗?查重怎么办 学信网学籍绑定输错5次怎么办 大学学校图书馆借的书丢了怎么办 借阅机里的图书不显示书名怎么办 苹果6s锁屏密码忘了怎么办 父亲去世后妈将父亲存款带走怎么办 狗和别的狗打架腿瘸了怎么办 神经病砍人警察不积极处理怎么办 才买了车里面的气味很大怎么办 家里装修两年了很大的木味怎么办 装修一年的房子夏天味很大怎么办 死了怕下地狱活着又受煎熬怎么办 狗狗的疫苗证丢了怎么办 剃了毛的狗不睡觉怎么办 家里的小狗送人了孩子一直哭怎么办 半个月的小狗一天没拉屎怎么办 把狗狗的毛剃了怎么办 用了维a酸乳膏过敏怎么办 药水点痣留下的红印怎么办 小孩牙齿被虫子吃了个洞怎么办 一岁宝宝贫血值是84怎么办 荒岛求生手机版被困在石室里怎么办 工伤认定期间被厂里辞退工资怎么办 怀孕50天看恐怖片肚子阴痛怎么办 欧卡二进游戏就卡画面了怎么办 魅族手机的微信图标找不到了怎么办 金立手机:微信图标找不到怎么办? 鞋厂装跟机老是卡钉怎么办 苹果手机摔了一下开不了机怎么办 百度网盘解析的种子保存不了怎么办 下载了种子百度网盘解析不了怎么办 正畸复诊后吃饭一直会磨嘴怎么办