多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 互聯網 > hadoop-HBase-observer的一個例子

hadoop-HBase-observer的一個例子

來源:程序員人生   發布時間:2014-11-05 08:25:06 閱讀次數:2574次
hbase(main):021:0> describe 'users'
DESCRIPTION                                                                                                         ENABLED                                                        
 {NAME => 'users', coprocessor$1 => 'file:///home/u/myjar/UsersObserver.jar|test.hbase.inaction.example5_2.Users true                                                           
 Observer|1001|', FAMILIES => [{NAME => 'info', BLOOMFILTER => 'NONE', REPLICATION_SCOPE => '0', COMPRESSION => 'N                                                                
 ONE', VERSIONS => '3', TTL => '2147483647', MIN_VERSIONS => '0', BLOCKSIZE => '65536', IN_MEMORY => 'false', BLOCK                                                                
 CACHE => 'true'}]}                                                                                                                                                                
1 row(s) in 0.0610 seconds

 先disable表,然后alert1下,那個1001是優先級,別忘記enable

 disable 'users'
 alter 'users', METHOD => 'table_att', 'coprocessor'=>'file:///home/u/mylib/UsersObserver.jar|test.hbase.inaction.example5_2.UsersObserver|1001|'
 alter 'users', METHOD => 'table_att_unset',NAME => 'coprocessor$2'   刪除
 enable 'users'

hbase(main):022:0> scan 'users'
ROW                                           COLUMN+CELL                                                                                                                          
 id01                                         column=info:email, timestamp=1413963413002, value=wyj@gmail.com                                                                      
 id01                                         column=info:name, timestamp=1413963413002, value=wyj                                                                                 
 id01                                         column=info:password, timestamp=1413963413002, value=000000                                                                          
 id01                                         column=info:user, timestamp=1413963413002, value=id01                                                                                
 id09                                         column=info:email, timestamp=1414566775616, value=test9@gmail.com                                                                    
 id09                                         column=info:name, timestamp=1414566775616, value=test9                                                                               
 id09                                         column=info:password, timestamp=1414566775616, value=9                                                                               
 id09                                         column=info:user, timestamp=1414566775616, value=id09                                                                                
 id99                                         column=info:email, timestamp=1414565339530, value=test99@gmail.com                                                                   
 id99                                         column=info:name, timestamp=1414565339530, value=test99                                                                              
 id99                                         column=info:password, timestamp=1414565339530, value======01=====                                                                    
 id99                                         column=info:user, timestamp=1414565339530, value=id99                                                                                
 invalID                                      column=info:invalid_pass, timestamp=1414566775657, value=invalid_pass:9                                                              
11 row(s) in 0.1290 seconds

start() 和stop()這兩個方法,在表enable和disable時分別也會對應履行

這start()和stop()在連接池里取得連接與釋放連接實在是過剩

observer類似觸發器,操作1張表的時候要注意遞歸調用,攔截到1次put后再put這個表就會遞歸

這個例子就是這樣的,實際上沒任何意義,就是個例子而已

注意鎖,HBase是行級的鎖,如果想put同1行是不會成功的

observer很不好調試,只能整1堆的log......

package test.hbase.inaction.example5_2; import java.io.IOException; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.hbase.CoprocessorEnvironment; import org.apache.hadoop.hbase.client.HTableInterface; import org.apache.hadoop.hbase.client.HTablePool; import org.apache.hadoop.hbase.client.Put; 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 test.hbase.inaction.example2_4.User; import test.hbase.inaction.example2_4.UsersDAO; /* <span style="color:#ff0000;">先disable表,然后alert1下,那個1001是優先級,別忘記enable</span> disable 'users' alter 'users', METHOD => 'table_att', 'coprocessor'=>'file:///home/u/mylib/FollowsObserver.jar|test.hbase.inaction.example5_2.FollowsObserver|1001|' alter 'users', METHOD => 'table_att_unset',NAME => 'coprocessor$2'<span style="white-space:pre"> </span> enable 'users' describe 'users' */ public class UsersObserver extends BaseRegionObserver { private final Log log = LogFactory.getLog(this.getClass()); private HTablePool pool = null; public void start(CoprocessorEnvironment env) throws IOException { log.info("WYJ ---------------------------- start() begin"); pool = new HTablePool(env.getConfiguration(), Integer.MAX_VALUE); log.info("pool=" + pool); log.info("WYJ ---------------------------- start() end"); } public void stop(CoprocessorEnvironment env) throws IOException { log.info("WYJ ---------------------------- stop() begin"); pool.close(); log.info("WYJ ---------------------------- stop() end"); } public void postPut(final ObserverContext<RegionCoprocessorEnvironment> e, final Put put, final WALEdit edit, final boolean writeToWAL) { log.info("WYJ: ================================================ postPut() begin"); try { byte[] table = e.getEnvironment().getRegion().getRegionInfo() .getTableName(); log.info("table=" + Bytes.toString(table)); if (!Bytes.equals(table, UsersDAO.TABLE_NAME)) { return; } String pass = Bytes.toString(put.get(UsersDAO.INFO_FAM, UsersDAO.PASS_COL).get(0).getValue()); log.info("pass=" + pass); byte[] user = put.get(UsersDAO.INFO_FAM, UsersDAO.USER_COL).get(0).getValue(); log.info("user=" + Bytes.toString(user)); if (pass == null || pass.length() < 6) { log.info("password.length=" + pass.length()); UsersDAO dao = new UsersDAO(pool); log.info("pool=" + pool); dao.addUser("id99", "test99", "test99@gmail.com", "=====01====="); log.info("dao.addUser("id99", "test99", "test99@gmail.com", "99999999"); FINAL"); } } catch (Exception ex) { log.error(ex, ex); } log.info("WYJ: ================================================ postPut() end"); } }

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 欧洲美女高清一级毛片 | 中文字幕乱码视频32 | 老司机午夜精品99久久免费 | 欧美一区二区三 | 国产99精品| 在线观看91精品国产性色 | 国产国语一级毛片在线放 | 欧美性猛交xxxx黑人喷水 | 欧美色欧美亚洲另类二区 | 一区二区三区欧美视频 | 老司机成人在线观看 | 欧美洲久久日韩欧美 | 最近的中文字幕 | 亚洲视频2 | 97碰碰碰免费公开在线视频 | 国产福利精品在线观看 | 欧美一级做性受 | 国产一区二区精品久久 | 亚洲成人资源 | 成人毛片一区二区三区 | 成人αv在线视频高清 | 欧美国产另类 | 亚洲精品第一第二区 | 国产老妇一性一交一乱 | 欧美最猛性xxxxx69交 | 2021年最新久久久视精品爱 | jiizzyou欧美18 | 特级aav毛片日本免费视频 | 国产成人美女福利在线观看 | 国产日韩欧美一区二区三区视频 | 在线观看麻豆精品国产不卡 | 欧美 自拍偷拍 | 欧美freesex交| 国产精品久久久久久爽爽爽 | 精品成人一区二区 | 亚洲欧美另类专区 | 在线看的黄色网址 | 精品久久久久久无码中文字幕 | 黑人太大太粗受不了了 | 日韩免费一级片 | 国产高清视频在线观看不卡v |