0925 hbase2 优化 压缩 hbase-mr

本文详细介绍HBase中Scan的高级用法,包括如何设定rowkey范围、使用过滤器进行精确查询,以及HBase与MapReduce的双向集成,实现从HBase到MR的数据输出和从MR到HBase的数据输入。

Scan 可以设置起始和结束的rowkey   rowkey按字典排序  scan.setStartROw(rowkey的值)  scan.setStopRow()

查找时可以设过滤器 

FilterList 构造中设置返回匹配的数据形式 返回全部匹配(FilterList.Operator.MUST_PASS_ALL)  或者  返回第一次匹配到的

filterList.add() 添加匹配原则   

PrefixFilter prefixFilter =new PrefixFilter(phonenum.getBytes());   行键前缀匹配
SingleColumnValueFilter single=new SingleColumnValueFilter(
   "cf".getBytes(), "type".getBytes(),
        CompareFilter.CompareOp.EQUAL,Bytes.toBytes(1));   列值匹配

 将设置的匹配原则添加到 FilterLits中 scan.setFilter(FilterList)  ResultScanner rs= table.getScanner(scan)  完成查询https://blog.youkuaiyun.com/u011750989/article/details/38558673  过滤器见百度

Hbase-MR互相操作

mr输出到HBase  reducer继承TableReducer<Text,Intwritable,ImmutableBytesWritable>  在context.write(null,put) 直接创建Put对象  将rowkey 和 列族 列值设置上     (需要先将表创建出来)在conf中设置hbase.zookeeper.quorum 

job.setMapperClass(WCMapper.class);
TableMapReduceUtil.initTableReducerJob(
      "wordcount",
        WCReducer.class,job,
        null,
        null,
        null,
        null,
        false
);
job.setOutputKeyClass(ImmutableBytesWritable.class);
job.setOutputValueClass(Writable.class);            这两个是设置整个mr的输出

hbase输出到mr上 map 继承TableMapper<Text,IntWritable> map的输出类型  此时row是key  通过Cell获取想要的列值   reducer端正常操作 在Main端  conf设置hbase节点

TableMapReduceUtil.initTableMapperJob(
        "phone_record",
        scan,
        LengthMapper.class,
        Text.class,
        IntWritable.class,
        job,
        false,
        false,
        TableInputFormat.class
);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);   同样设置MR的输出k,v

hbase-mr-hbase   结合TableMapper 和TableReducer 

 

 

 

优化  看文档

压缩

将hbase的存贮 以类的方式 存贮压缩  使用压缩工具 protobuf   1 安装压缩软件  2 根据列值 合成一个类的文件  3 编译 4 编译后的文件 辅助粘贴到idea上 5 在idea上 操作Myphone put进phone列    

中心思想就是 将一系列的列 合并成一个类  每个列都是这个类的属性   再进行压缩 就是压缩这个类   

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值