HBase 協處理器個別簡單案例

2022-08-02 08:06:08 字數 2037 閱讀 3385

協處理器,我個人的理解就是相當於資料庫的觸發器一樣,可以在改變(增刪改)資料的前後,做一些緊跟的動作

直接舉例子

1.

//

重寫preput方法,監聽到向table1表插入資料時,執行向table2表插入資料的**

public

class myprocessor extends

baseregionobserver

}

這是乙個在put前執行其他方法的例子,案例的作用是監聽到向table1表插入資料時,執行向table2表插入資料的**

2.這是另乙個例子,就是有乙個關係表relative,a有b的好友,同樣b有a的好友,需要a刪除b的好友的同時,b好友中的a也應該刪除 

//

刪除好友關係表,a刪除b的同時,b要刪除a

@override

public

void predelete(observercontexte, delete delete, waledit edit, durability durability) throws

ioexception

//執行批量刪除

relative.delete(deletes);

//關閉table物件

relative.close();

}

上面的**思路是a刪除b之前,寫了乙個協處理器,刪除前處理事件,a刪除b之前,先刪除b中a的記錄。

但是,上面的**會造成死迴圈。協處理器對每一次刪除都要觸發。a要刪除b,觸發,需要b先刪除a,觸發,又需要a先刪除b,死迴圈,hbase直接卡死。

後來,檢視原始碼,確實應該有乙個方法是delete之後觸發的,postdelete,就報上面的方法名換了一下

//

刪除好友關係表,a刪除b的同時,b要刪除a

@override

public

void postdelete(observercontexte, delete delete, waledit edit, durability durability) throws

ioexception

//執行批量刪除

relative.delete(deletes);

//關閉table物件

relative.close();

}

當然,這還是不行,最好在刪除前判斷一下,是否有這條記錄,如下

@override

public

void postdelete(observercontexte, delete delete, waledit edit, durability durability) throws

ioexception }}

}//執行批量刪除

relative.delete(deletes);

//關閉table物件

relative.close();

}

這樣就可以了,實現刪除relative中好友關係,a刪除b,b也會自動刪除a的好友記錄。

記住,你得上傳jar包到hadoop掛載到habase中relative表

**打包成jar包   postdelete.jar

上傳到hadoop

hdfs dfs -mkdir -p /processor

hdfs dfs -put processor.jar /processor

在hbase中執行

alter 'relative',method => 'table_att','coprocessor'=>'hdfs://linux121:9000/processor/postdelete.jar|com.test.hbase.processor.postdelete|1001|' 

表名                           列屬性名,可自定義                                    hadoop中jar包對應得位置資訊    對應類的路徑名包名+類名                 優先順序,多個觸發器,優先順序大的先觸發

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,能夠有效用於資...