共计 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 行业资讯频道。