HBASE——协调处理器实现代码

关注表里添加一条信息,那么粉丝表里也添加一条对应信息

 

package hbase_mr;

import HbaseApi.HbaseUtilTool;
import org.apache.hadoop.hbase.Cell;
import org.apache.hadoop.hbase.CellScanner;
import org.apache.hadoop.hbase.CellUtil;
import org.apache.hadoop.hbase.client.Durability;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Table;
import org.apache.hadoop.hbase.coprocessor.BaseRegionObserver;
import org.apache.hadoop.hbase.coprocessor.ObserverContext;
import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;
import org.apache.hadoop.hbase.regionserver.wal.WALEdit;
import org.apache.hadoop.hbase.util.Bytes;

import java.io.IOException;

public class IndexOBserver extends BaseRegionObserver {

    @Override
    public void prePut(ObserverContext<RegionCoprocessorEnvironment> e, Put put,
                       WALEdit edit, Durability durability) throws IOException {

        String rowkey = Bytes.toString(put.getRow());
        String[] s = rowkey.split("_");
        String newRowkey=s[1]+"_"+s[0];

        Put newPut = new Put(Bytes.toBytes(newRowkey));

        CellScanner cellScanner = put.cellScanner();
        Boolean flag=false;
        while (cellScanner.advance()){
            Cell current = cellScanner.current();
            String columnName = new String(CellUtil.cloneQualifier(current));
            String columnValue = new String(CellUtil.cloneValue(current));

            if(columnName.equals("from")){
                newPut.addColumn(Bytes.toBytes("f1"),Bytes.toBytes("to"),Bytes.toBytes(columnValue));
                flag=true;
            }else  if(columnName.equals("to")){
                newPut.addColumn(Bytes.toBytes("f1"),Bytes.toBytes("from"),Bytes.toBytes(columnValue));
                flag=true;
            }
          if(flag){
              Table table = HbaseUtilTool.getTable("ns1:t_fensi");
              table.put(newPut);
          }

            super.prePut(e, put, edit, durability);

        }


    }
}

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值