分享

hbase协处理器,怎么判断是否是更新

ld512870 发表于 2015-4-9 21:01:30 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 4 20268
  • public class HbaseCoprocessor extends BaseRegionObserver {
  •         public void prePut(final ObserverContext<RegionCoprocessorEnvironment> e,
  •                         final Put put, final WALEdit edit, final boolean writeToWAL)
  •                         throws IOException {
  •                 // set configuration
  •                 Configuration conf = new Configuration();
  •                 // need conf.set...
  •                 String colName = "columnName";
  •                 HTable table = new HTable(conf, "indexTableName");
  •                 List<Cell> kv = put.get("familyName".getBytes(), colName.getBytes());
  •                 Iterator<Cell> kvItor = kv.iterator();
  •                 while (kvItor.hasNext()) {
  •                         Cell tmp = kvItor.next();
  •                         Put indexPut = new Put(tmp.getValue());
  •                         indexPut.add("familyName".getBytes(), "columnName".getBytes(),
  •                                         tmp.getRow());
  •                         table.put(indexPut);
  •                 }
  •                 table.close();
  •         }
  • 对于这种情况,我怎么判断这个put是在hbase中是要更新的还是要直接添加的??
  • }

已有(4)人评论

跳转到指定楼层
desehawk 发表于 2015-4-9 21:30:15

插入之后,在通过setMaxVersions()方法就可以把所有的版本都取出来了
       Get get = new Get(startRow);
            get.setMaxVersions();
            Result result = table.get(get);
             List<KeyValue> list = result.list();
              for(final KeyValue v:list){
                  logger.info("value: "+ v+ " str: "+Bytes.toString(v.getValue()));
              }
这样就明了了

回复

使用道具 举报

ld512870 发表于 2015-4-9 23:28:47
desehawk 发表于 2015-4-9 21:30
插入之后,在通过setMaxVersions()方法就可以把所有的版本都取出来了
       Get get = new Get(startRo ...

恩。好的。还有个问题就是我用的上面的这个函数在hbase并不能触发,改成
        @Override
        public void prePut(ObserverContext<RegionCoprocessorEnvironment> e,
                        Put put, WALEdit edit, Durability durability) throws IOException {
                // TODO Auto-generated method stub
               
        }就可以了。这是一个新的API吗?我用的hbase 0.98.6 cdh的。

回复

使用道具 举报

desehawk 发表于 2015-4-9 23:35:14
ld512870 发表于 2015-4-9 23:28
恩。好的。还有个问题就是我用的上面的这个函数在hbase并不能触发,改成
        @Override
        public void preP ...

这个是以前的api, 0.98.6应该有与之对应的
回复

使用道具 举报

ld512870 发表于 2015-4-10 08:33:55
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条