hbaseORMsimplehbasev0.6简介-创新互联

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

创新互联成立十多年来,这条路我们正越走越好,积累了技术与客户资源,形成了良好的口碑。为客户提供网站建设、成都网站设计、网站策划、网页设计、域名注册、网络营销、VI设计、网站改版、漏洞修补等服务。网站是否美观、功能强大、用户体验好、性价比高、打开快等等,这些对于网站建设都非常重要,创新互联通过对建站技术性的掌握、对创意设计的研究为客户提供一站式互联网解决方案,携手广大客户,共同发展进步。

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。

当前标题:hbaseORMsimplehbasev0.6简介-创新互联
网站链接:https://www.cdcxhl.com/article26/dpdhjg.html

成都网站建设公司_创新互联,为您提供用户体验App开发网站维护企业建站商城网站Google

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

商城网站建设