怎样解析hbase ORM simplehbase v0.7

101次阅读
没有评论

共计 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字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)