浏览 2141 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2014-05-07
https://github.com/zhang-xzhi/simplehbase/
https://github.com/zhang-xzhi/simplehbase/wiki ### v0.8 批量操作接口新增 public <T> void putObjectList(List<PutRequest<T>> putRequestList); public void deleteObjectList(List<RowKey> rowKeyList, Class<?> type); public <T> void putObjectListMV(List<PutRequest<T>> putRequests,long timestamp) public <T> void putObjectListMV(List<PutRequest<T>> putRequests,Date timestamp) public <T> void putObjectListMV(List<PutRequest<T>> putRequestList) public void deleteObjectMV(RowKey rowKey, Class<?> type, long timeStamp) public void deleteObjectMV(RowKey rowKey, Class<?> type, Date timeStamp) public void deleteObjectListMV(List<RowKey> rowKeyList, Class<?> type,long timeStamp) public void deleteObjectListMV(List<RowKey> rowKeyList, Class<?> type,Date timeStamp) public void deleteObjectListMV(List<DeleteRequest> deleteRequestList,Class<?> type); Util新增(前缀查询使用) public static RowKey getEndRowKeyOfPrefix(RowKey prefixRowKey) 性能改进 把get的实现从scan调回get。 ### 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 如何配置可以参考或直接查看代码: https://github.com/zhang-xzhi/simplehbase/wiki/C02-simplehbaseclient-配置 ### doc * https://github.com/zhang-xzhi/simplehbase/wiki * https://github.com/zhang-xzhi/simplehbaseviewer/wiki * simplehbase下载后simplehbase\doc 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |