`
zhang_xzhi_xjtu
  • 浏览: 536434 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

hbase ORM simplehbase/simplehbaseviewer v0.8简介及使用说明

阅读更多
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
分享到:
评论

相关推荐

    hbase orm simplehbase v1.0

    SimpleHbase是一款针对Java开发的轻量级中间件,它主要设计用于简化HBase数据库的操作。这个库提供了数据类型映射、操作封装、查询封装、动态查询、多版本支持、批量操作等一系列功能,使得Java开发者可以更加高效地...

    基于注解的hbase orm小工具,目前比较简单

    **基于注解的HBase ORM小工具详解** 在大数据领域,Apache HBase作为一个分布式、面向列的NoSQL数据库,常用于处理大规模数据。然而,与传统的关系型数据库不同,HBase的操作模式相对复杂,需要通过Java API进行低...

    hbase-sdk是基于hbase-client和hbase-thrift的原生API封装的一款轻量级的HBase ORM框架

    对HBase的API做了一层抽象,统一了HBase1.x和HBase2.x的实现,并提供了读写HBase的ORM的支持,同时,sdk还对HBase thrift 的客户端API进行了池化封装,(类似JedisPool),消除了直接使用原生API的各种问题,使之...

    hbase轻量级中间件simplehbase v0.1简介

    标题“hbase轻量级中间件simplehbase v0.1简介”揭示了我们要讨论的主题——SimpleHBase,它是一个针对Apache HBase的轻量级中间件,版本为v0.1。这个中间件可能是为了简化HBase的使用,提高开发效率而设计的。描述...

    pinpoint的hbase初始化脚本hbase-create.hbase

    搭建pinpoint需要的hbase初始化脚本hbase-create.hbase

    hbase-2.4.16-bin.tar.gz

    hbase官网下载地址(官网下载太慢): https://downloads.apache.org/hbase/ 国内镜像hbase-2.4.16: https://mirrors.tuna.tsinghua.edu.cn/apache/hbase/2.4.16/hbase-2.4.16-bin.tar.gz

    hbase_libJar包

    《深入理解HBase_libJar包及其在Linux环境中的配置》 HBase,作为一个分布式、高性能、基于列存储的NoSQL数据库,广泛应用于大数据处理场景。其中,`hbase_libJar包`是HBase运行的核心组件之一,包含了HBase运行所...

    centos7 安装 hbase单机版

    wget http://mirror.bit.edu.cn/apache/hbase/stable/hbase-2.2.3-bin.tar.gz 解压压缩包 tar -zxvf hbase-2.2.3-bin.tar.gz 修改/opt/hbase-2.2.3/conf/hbse-env.sh文件 第一步 设置javahome export JAVA_HOME=/...

    HBase轻量级中间件simplehbase.zip

    simplehbase是java和hbase之间的轻量级中间件。 主要包含以下功能。  数据类型映射:java类型和hbase的bytes之间的数据转换。  简单操作封装:封装了hbase的put,get,scan等操作为简单的java操作方式。  hbase ...

    HBase单机版部署教程

    echo "export HBASE_HOME=/home/demo/hbase/hbase-1.2.2" &gt;&gt; /etc/profile echo "export PATH=$PATH:$HBASE_HOME/bin" &gt;&gt; /etc/profile source /etc/profile 配置hbase-env.sh文件 现在,我们需要配置hbase-env....

    hbase2.x-hbck2 jar包及测试命令

    HBase是Apache Hadoop生态系统中的一个分布式、高性能的NoSQL数据库。在HBase 2.x版本中,HBCK2(HBase FileSystem Check Tool 2)是一个重要的工具,用于检查和修复HBase表和Region的不一致性。HBCK2是HBase维护和...

    phoenix+spring+hbase

    phoenix +hbase+spring 整合技术 phoenix +hbase+spring 整合技术 phoenix +hbase+spring 整合技术 根据需要 下载 集成的jar phoenix-core-4.13.0-HBase-0.98.jar

    Hbase详细安装步骤

    使用命令 `vim /usr/local/hbase/conf/hbase-site.xml` 编辑配置文件,在 `&lt;configuration&gt;` 元素中添加以下内容: ``` &lt;name&gt;hbase.rootdir&lt;/name&gt; &lt;value&gt;hdfs://localhost:9000/hbase&lt;/value&gt; &lt;/property&gt; ...

    10-HBase安装操作1

    编辑 `/export/server/hbase/conf/hbase-env.sh` 文件,确保指定正确的Java Home路径,并关闭HBase管理ZooKeeper: ```bash vim hbase-env.sh # 第28行 export JAVA_HOME=/export/server/jdk1.8.0_241 export HBASE...

    HBase2.x之RIT问题解决.docx

    hdfs dfs -cp /hbase/data/hospital/P_TDY_DASC_DE02_01_039_63 /hbase/data/hospital/M_TDY_PT_LCZZ hdfs dfs -rm -r -skipTrash /hbase/data/hospital/P_TDY_DASC_DE02_01_039_63 hdfs dfs -rm -r -skipTrash /...

    大数据技术基础实验报告-HBase安装配置和应用实践.doc

    - 配置环境变量,将`hbase/bin`添加到`PATH`中,可以通过编辑`~/.bashrc`文件实现,这使得可以在任何目录下启动HBase。 - 使用`sudo chown -R hadoop ./hbase`命令更改所有文件的所有权,确保当前用户(这里是`...

    hbase-shell批量命令执行脚本的方法

    批量执行hbase shell 命令 #!/bin/bash source /etc/profile exec $HBASE_HOME/bin/hbase shell &lt;&lt;EOF truncate 'tracker_total_apk_fact_zyt' major_compact('t_abc') disable 't_abc' drop 't_abc' create...

    Hbase SYSTEM.STATS磁盘爆满 处理方法.docx

    在本案例中,使用`./hadoop fs -du -h /sfdcloud/hbase/data/default/`命令来查看/sfdcloud/hbase/data/default/路径下各目录的大小,以便定位问题。 2. **确认SYSTEM.STATS表**:通过上一步的检查,如果发现SYSTEM...

Global site tag (gtag.js) - Google Analytics