電信客服專案之協處理器

2021-08-24 20:54:25 字數 1900 閱讀 4110

協處理器在本專案中主要是用來,在向hbase中put一條資料時同時也要put一條call1和call2顛倒的資料

注意:1、協處理器如果是配置到hbase-site.xml檔案中,預設是對全部的表都進行處理

2、如果不配置到xml檔案,只指定某個表,那麼就只對改表有效

3、注意將consumer進行編譯,打包,打包後上傳到hbase的lib包下,記住記住,一定要分發這個jar包

4、一定要慎用,如果出現問題,就在hbase-site.xml中配置,見之前部落格

本專案的協處理器:

public class calleeconprocess extends baseregionobserver 

//取出上乙個操作的put

string oldrow = bytes.tostring(put1.getrow());

string splits = oldrow.split("_");

//!切割後的資料判斷flag是不是0,不是0的話會死迴圈

if("1".equals(splits[4])) return;

string call1 = splits[1];

string buildtime = splits[2];

string call2 = splits[3];

string flag = splits[4];

string duration = splits[5];

//獲取上乙個put,並生成新的,要插入的put

string newpar = hbaseutil.getpartionkey(call2,buildtime,regions);

string newkey = hbaseutil.getrowkey(newpar,call2,buildtime,call1,"1",duration);

put newput = new put(bytes.tobytes(newkey));

//在新的put中新增資料

newput.addcolumn(bytes.tobytes(cf2),bytes.tobytes("call1"),bytes.tobytes(call2));

newput.addcolumn(bytes.tobytes(cf2),bytes.tobytes("buildtime"),bytes.tobytes(buildtime));

newput.addcolumn(bytes.tobytes(cf2),bytes.tobytes("call2"),bytes.tobytes(call1));

newput.addcolumn(bytes.tobytes(cf2),bytes.tobytes("flag"),bytes.tobytes("1"));

newput.addcolumn(bytes.tobytes(cf2),bytes.tobytes("duration"),bytes.tobytes(duration));

//插入資料

connection connection = connectionfactory.createconnection(constant.hbaseconfiguration);

table table = connection.gettable(tablename.valueof(tablename));

table.put(newput);

//關閉資源

table.close();

connection.close();

}}

在hbaseutil中修改

htabledescriptor.addcoprocessor("com.xin.conprocess.calleeconprocess");

hbase 協處理器 部署 hbase 協處理器

1 自定義協處理器 hbase 版本 2.x 使用自定義的協處理器需要實現coprocessor,regionobserver,coprocessorservice這三個介面,如下圖 可以看出協處理器的載入分為靜態載入和動態載入,靜態載入需要修改hbase site.xml配置檔案,這將對所有的hb...

HBase協處理器

協處理器分兩種型別,系統協處理器可以全域性匯入region server上的所有資料表,表協處理器即是使用者可以指定一張表使用協處理器。協處理器框架為了更好支援其行為的靈活性,提供了兩個不同方面的外掛程式。乙個是觀察者 observer 類似於關聯式資料庫的觸發器。另乙個是終端 endpoint 動...

Hbase協處理器

hbase作為資料庫最經常被人詬病的特性包括 無法輕易建立 二級索引 難以求和 計數 排序等操作 比如,在舊版本的 0.92 hbase中,統計資料表的行數,需要使用counter方法,執行一次mapreduce job 才能得到。雖然hbase在資料儲存層中整合了mapreduce,能夠有效用於資...