我的Java路上那些事兒

          快樂成長(zhǎng)
          posts - 110, comments - 101, trackbacks - 0, articles - 7
            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          日歷

          <2012年8月>
          2930311234
          567891011
          12131415161718
          19202122232425
          2627282930311
          2345678

          搜索

          •  

          最新評(píng)論

          htable coprocessor使用

          Posted on 2012-08-16 17:30 云云 閱讀(1176) 評(píng)論(1)  編輯  收藏
          在網(wǎng)瀏覽的時(shí)候  發(fā)現(xiàn)了這篇文章  很有用  就保留了下來(lái)

          hbase不是數(shù)據(jù)庫(kù),一些數(shù)據(jù)庫(kù)中基本的功能hbase并不具備.
          二級(jí)索引就是其中很重要的一點(diǎn),在數(shù)據(jù)庫(kù)中索引是在平常不過(guò)的功能了.
          而在hbase中,value上的索引只能靠自己來(lái)實(shí)現(xiàn).

          hbase中最簡(jiǎn)單的二級(jí)索引的實(shí)現(xiàn)方式是通過(guò)另外一個(gè)hbase表來(lái)實(shí)現(xiàn).
          下面通過(guò)postput方法,實(shí)現(xiàn)對(duì)表sunwg01的二級(jí)索引.

          舉例說(shuō)下二級(jí)索引實(shí)現(xiàn):
          表sunwg01的f1:k1有如下記錄
          100 tom
          101 mary

          對(duì)于表sunwg01來(lái)說(shuō),可以通過(guò)100,101直接訪問記錄,但是如果想要訪問mary這條記錄,則只能全表遍歷
          為了解決這個(gè)問題,創(chuàng)建了表sunwg02
          表sunwg02中的f1:k1有如下記錄
          tom 100
          mary 101

          現(xiàn)在如果要查找mary這條記錄,可以先查表sunwg02中,找到mary的value的為101

          下面通過(guò)postput方式實(shí)現(xiàn),在put源表的同時(shí)更新索引表的功能。
          詳細(xì)代碼如下:

          import java.io.IOException; import java.util.Iterator; import java.util.List;   import org.apache.hadoop.hbase.KeyValue; import org.apache.hadoop.hbase.client.HTable; 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;   public class postput_test extends BaseRegionObserver {         @Override      public void postPut(final ObserverContext<RegionCoprocessorEnvironment> e,           final Put put, final WALEdit edit, final boolean writeToWAL) throws IOException {             HTable table = new HTable("sunwg02");           List<KeyValue> kv = put.get("f1".getBytes(), "k1".getBytes());           Iterator<KeyValue> kvl = kv.iterator();             while(kvl.hasNext()) {               KeyValue tmp = kvl.next();               Put tput = new Put(tmp.getValue());               tput.add("f1".getBytes(),"k1".getBytes(),tmp.getRow());               table.put(tput);             }           table.close();       } 






          評(píng)論

          # re: htable coprocessor使用   回復(fù)  更多評(píng)論   

          2013-08-09 15:33 by jxauwxj@126.com
          請(qǐng)問一下,我試了好次,都沒成功自動(dòng)創(chuàng)建索引。請(qǐng)問大神你是如何做的?謝謝


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 乌鲁木齐县| 法库县| 社旗县| 东乌珠穆沁旗| 韶关市| 海丰县| 海兴县| 封开县| 屏边| 怀来县| 华阴市| 镇赉县| 微博| 昔阳县| 慈利县| 晴隆县| 马山县| 兰考县| 武城县| 余江县| 巴林右旗| 大名县| 台东市| 金堂县| 宁陵县| 桓仁| 错那县| 双城市| 惠水县| 绍兴市| 城口县| 克什克腾旗| 晋城| 德格县| 岢岚县| 黄梅县| 营山县| 丘北县| 临夏县| 昭苏县| 石楼县|