久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

怎樣解析hbase ORM simplehbase v0.7

186次閱讀
沒有評論

共計 5528 個字符,預計需要花費 14 分鐘才能閱讀完成。

本篇文章為大家展示了怎樣解析 hbase ORM simplehbase v0.7,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

### v0.7 新增功能:
支持查詢時主記錄和關聯的 RowKey 同時返回。

由于 github 不穩定,使用說明附在文檔后面。

## simplehbase 簡介
simplehbase 是 java 和 hbase 之間的輕量級中間件。
主要包含以下功能。
*  數據類型映射:java 類型和 hbase 的 bytes 之間的數據轉換。
*  簡單操作封裝:封裝了 hbase 的 put,get,scan 等操作為簡單的 java 操作方式。
*  hbase query 封裝:封裝了 hbase 的 filter,可以使用 sql-like 的方式操作 hbase。
*  動態 query 封裝:類似于 myibatis,可以使用 xml 配置動態語句查詢 hbase。
*  insert,update 支持: 建立在 hbase 的 checkAndPut 之上。
*  hbase 多版本支持:提供接口可以對 hbase 多版本數據進行查詢, 映射。
*  hbase 原生接口支持。

## simplehbase 示例(SampleMain.java)

### 使用 simplehbaseclient 操作 hbase

  SimpleHbaseClient simpleHbaseClient = getSimpleHbaseClient();

  //insert one record.
  Person one = new Person();
  one.setId(1);
  one.setName(allen
  one.setAge(30);
  one.setGender(Gender.MALE);
  simpleHbaseClient.putObject(new PersonRowKey(1), one);

  //insert another record.
  Person two = new Person();
  two.setId(2);
  two.setName(dan
  two.setAge(31);
  two.setGender(Gender.FEMALE);
  simpleHbaseClient.putObject(new PersonRowKey(2), two);

  //search by row key.
  Person result = simpleHbaseClient.findObject(new PersonRowKey(1),
  Person.class);
  log.info(result);

  //search by range.
  List Person resultList = simpleHbaseClient.findObjectList(
  new PersonRowKey(1), new PersonRowKey(3), Person.class);
  log.info(resultList);

  //HQL query.
  Map String, Object para = new HashMap String, Object
  para.put(id , 1);
  resultList = simpleHbaseClient.findObjectList(new PersonRowKey(1),
  new PersonRowKey(3), Person.class, queryById , para);
  log.info(resultList);

  //dynamic HQL.
  para.put(name , allen
  para.put(age , 0);
  resultList = simpleHbaseClient.findObjectList(new PersonRowKey(1),
  new PersonRowKey(3), Person.class, queryByNameAndAge , para);
  log.info(resultList);

  //batch delete.
  simpleHbaseClient.deleteObjectList(new PersonRowKey(0),
  new PersonRowKey(100), Person.class);

### 初始化 simplehbase

  HBaseDataSource hbaseDataSource = new HBaseDataSource();

  List Resource hbaseConfigResources = new ArrayList Resource
  //If run on hbase cluster, modify the following config files.
  //If run on hbase stand alone mode, comment out the following config files.
  hbaseConfigResources.add(new CachedFileSystemResource(
  sample\\hbase_site ));
  hbaseConfigResources
  .add(new CachedFileSystemResource( sample\\zk_conf));
  hbaseDataSource.setHbaseConfigResources(hbaseConfigResources);

  hbaseDataSource.init();

  HBaseTableConfig hbaseTableConfig = new HBaseTableConfig();
  //simplehbase config file.
  hbaseTableConfig.setConfigResource(new CachedFileSystemResource(
  sample\\myRecord.xml ));

  hbaseTableConfig.init();

  SimpleHbaseClient tClient = new SimpleHbaseClientImpl();
  tClient.setHbaseDataSource(hbaseDataSource);
  tClient.setHbaseTableConfig(hbaseTableConfig);

  return tClient;
 
   
### simplehbase 配置 xml
包含 htable 的配置和 2 個動態查詢的配置
SimpleHbase

  HBaseTableSchema tableName= MyRecordV05 defaultFamily= MyRecordFamily
  HBaseColumnSchema qualifier= id typeName= int /
  HBaseColumnSchema qualifier= name typeName= string /
  HBaseColumnSchema qualifier= date typeName= date /
  HBaseColumnSchema qualifier= gender typeName= allen.sample.Gender /
  HBaseColumnSchema qualifier= age typeName= int /
  /HBaseTableSchema
   
   
  statements    
   
  statement id= queryByNameAndAge
  select where id greaterequal #id#
  isPropertyAvailable prepend= and property= name
  name equal #name#
  /isPropertyAvailable
  isPropertyAvailable prepend= and property= age
  age greater #age#
  /isPropertyAvailable
  /statement    
   
  statement id= queryById
  select where id equal #id#   
  /statement    
   
  /statements    
/SimpleHbase    

### 定義 DO 對象
  @HBaseTable(defaultFamily = MyRecordFamily)
  public class Person {
  @HBaseColumn(qualifier = id)
  private int  id;
  @HBaseColumn(qualifier = name)
  private String name;
  @HBaseColumn(qualifier = date)
  private Date  date;
  @HBaseColumn(qualifier = gender)
  private Gender gender;
  @HBaseColumn(qualifier = age)
  private int  age;
  }

### 定義該 DO 對象對應的 rowkey
  public class PersonRowKey implements RowKey {
   
  private int row;
   
  public PersonRowKey(int row) {
  this.row = row;
  }
   
  @Override
  public byte[] toBytes() {
  return Bytes.toBytes(row);
  }
  }

##simphbase simplehbaseviewer 使用說明

### simplehbase/simplehbaseviewer 版本
0.5.1 / 0.6 / 0.7

### jdk
jdk/jre 1.6

### maven
maven2

### 代碼下載
最新 simplehbase 代碼下載。
https://github.com/zhang-xzhi/simplehbase
右下角的 download zip。

帶版本的 simplehbase 版本下載。
https://github.com/zhang-xzhi/simplehbase/releases

最新 simplehbaseviewer 代碼下載。
https://github.com/zhang-xzhi/simplehbaseviewer
右下角的 download zip。

帶版本的 simplehbaseviewer 版本下載。
https://github.com/zhang-xzhi/simplehbaseviewer/releases

### Simplehbase 本地驗證
代碼下載后,mvn eclipse:eclipse 后導入 eclipse。
運行 simplehbase 的 test。(Junit)

目前 simplehbase 默認的測試環境為

  hbase.zookeeper.quorum=hbdev-1.alipay.net,hbdev-2.alipay.net,hbdev-3.alipay.net,hbdev-4.alipay.net,hbdev-5.alipay.net
  hbase.zookeeper.property.clientPort=2181
  zookeeper.znode.parent=/hbase-94

* 1 若無法連接,修改 test/zk_conf 文件(集成測試使用,修改 sample/zk_conf 文件(樣例程序使用)。
* 2 建測試表。運行 CreateTestTable, 新建 MyRecordV05 表。
* 3 建表成功后,重新運行 test,后續運行,不需要重新建立測試表。
* 4 新增 htable 的配置,請參考既有表的配置。

### Simplehbaseviewer 本地驗證
安裝 simplehbase 到本地倉庫。
在 simplehbase 項目中,mvn install。

simplehbaseviewer 代碼下載后,mvn eclipse:eclipse 后導入 eclipse。

運行 Main。

訪問 http://localhost:4040/hbaseviewer/
看 simplehbaseview 是否啟動正常。

目前 simplehbaseviewer 默認的測試環境為

  hbase.zookeeper.quorum=hbdev-1.alipay.net,hbdev-2.alipay.net,hbdev-3.alipay.net,hbdev-4.alipay.net,hbdev-5.alipay.net
  hbase.zookeeper.property.clientPort=2181
  zookeeper.znode.parent=/hbase-94

* 1 若無法連接,修改 config/zk_conf 文件。
* 2 建測試表。運行 CreateTestTable, 新建 MyRecordV05 表。
* 3 建表成功后,重新運行 Main。

### Simplehbase jar 包依賴
pom 依賴,請參考 simplehbase 的 pom 文件。

其中,hadoop 和 hbase 可以修改為目前集團 hbase 使用的版本。

Simplehbase 開發測試過程中使用的 hbase 版本為 0.94.0。

理論上,hbase0.92 也可以使用,但是未經測試,可以跑 test 進行測試。

### Simplehbaseclient 配置
SimpleHbaseClient 為 simplehbase 的核心接口。

Java 方式配置可以參考 simplehbase 的 SampleMain。

Spring 方式配置可以參考 simplehbaseviewer 的
\hbaseviewer\WEB-INF\spring\simplehbase.xml

上述內容就是怎樣解析 hbase ORM simplehbase v0.7,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注丸趣 TV 行業資訊頻道。

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-25發表,共計5528字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 巢湖市| 独山县| 武威市| 云阳县| 黄石市| 大关县| 永靖县| 依兰县| 鸡西市| 尚志市| 翼城县| 神木县| 长岛县| 栖霞市| 澎湖县| 曲松县| 旌德县| 宁乡县| 大同市| 阳谷县| 桃园市| 扎兰屯市| 韩城市| 永康市| 曲阜市| 班玛县| 呼伦贝尔市| 安阳市| 平邑县| 余姚市| 赣州市| 卢氏县| 晋中市| 寻甸| 鄂尔多斯市| 全州县| 霞浦县| 山东| 柳江县| 铁力市| 临潭县|