返回顶部
首页 > 资讯 > 数据库 >hbase ORM simplehbase v0.6简介
  • 910
分享到

hbase ORM simplehbase v0.6简介

2024-04-02 19:04:59 910人浏览 独家记忆
摘要

https://GitHub.com/zhang-xzhi/simpleHBase/Https://github.com/zhang-xzhi/simplehbase/wikisimplehbase是jav

https://GitHub.com/zhang-xzhi/simpleHBase/
Https://github.com/zhang-xzhi/simplehbase/wiki


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/si ... -%E9%85%8D%E7%BD%AE

### doc
* https://github.com/zhang-xzhi/simplehbase/wiki
* https://github.com/zhang-xzhi/simplehbaseviewer/wiki
* simplehbase下载后simplehbase\doc



您可能感兴趣的文档:

--结束END--

本文标题: hbase ORM simplehbase v0.6简介

本文链接: https://lsjlt.com/news/44766.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • hbase ORM simplehbase v0.6简介
    https://github.com/zhang-xzhi/simplehbase/https://github.com/zhang-xzhi/simplehbase/wikisimplehbase是jav...
    99+
    2024-04-02
  • HBase简介
    一、简介   HBase是基于列存储、构建在HDFS上的分布式存储系统,其主要功能是存储海量结构化数据。      HBase构建在HDFS之上,...
    99+
    2024-04-02
  • Django之模型---ORM简介
      ORM,是“对象-关系-映射”的简称,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人员的工作量,不需要面对因数据库变更而导致的无效劳动。 创建项...
    99+
    2023-01-30
    模型 简介 Django
  • ORM框架之Dapper简介和性能测试
    Dapper的简介 Dapper是.NET下一个micro的ORM,它和Entity Framework或Nhibnate不同,属于轻量级的,并且是半自动的。Dapper只有一个代码...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作