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

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

 
阅读更多
https://github.com/zhang-xzhi/simplehbase/
https://github.com/zhang-xzhi/simplehbase/wiki
simplehbase简介

simplehbase是java和hbase之间的轻量级中间件。 主要包含以下功能。

    数据类型映射:java类型和hbase的bytes之间的数据转换。
    简单操作封装:封装了hbase的put,get,scan等操作为简单的java操作方式。
    hbase query封装:封装了hbase的filter,可以使用sql-like的方式操作hbase。
    动态query封装:类似于myibatis,可以使用xml配置动态语句查询hbase。

simplehbase示例
setup hbase

可以参考网上文档。
初始化simplehbase

private static SimpleHbaseClient getSimpleHbaseClient() {
    HBaseDataSource hbaseDataSource = new HBaseDataSource();
    List<String> hbaseConfigFilePaths = new ArrayList<String>();
    //hbase配置文件。
    hbaseConfigFilePaths.add("sample\\hbase_site");
    //zk配置文件。
    hbaseConfigFilePaths.add("sample\\zk_conf");
    hbaseDataSource.setHbaseConfigFilePaths(hbaseConfigFilePaths);
    hbaseDataSource.init();

    HBaseTableConfig hbaseTableConfig = new HBaseTableConfig();
    //simplehbase配置文件。
    hbaseTableConfig.setConfigFilePath("sample\\myRecord.xml");
    hbaseTableConfig.init();

    SimpleHbaseClient tClient = new SimpleHbaseClientImpl();
    tClient.setHBaseDataSource(hbaseDataSource);
    tClient.setHbaseTableConfig(hbaseTableConfig);

    return tClient;
}


simplehbase配置xml

包含htable的配置和一个动态查询的配置

<HBaseTableSchema tableName="MyRecord" 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 greater #id#
        <isPropertyAvailable prepend="and" property="name">
            name equal #name#
        </isPropertyAvailable>
        <isPropertyAvailable prepend="and" property="age">
            age greater #age#
        </isPropertyAvailable>
    </statement>        
</statements> 
 

定义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;
}


定义该htable的rowkey

public class PersonRowKey implements RowKey {

    private int row;

    public PersonRowKey(int row) {
        this.row = row;
    }

    @Override
    public byte[] toBytes() {
        return Bytes.toBytes(row);
    }
}


使用simplehbaseclient操作hbase

public static void main(String[] args) throws Exception {

    SimpleHbaseClient simpleHbaseClient = getSimpleHbaseClient();

    //插入一条记录。
    Person one = new Person();
    one.setId(1);
    one.setName("allen");
    one.setAge(30);
    one.setGender(Gender.MALE);
    simpleHbaseClient.putObject(new PersonRowKey(1), one);

    //插入一条记录。
    Person two = new Person();
    two.setId(2);
    two.setName("dan");
    two.setAge(31);
    two.setGender(Gender.FEMALE);
    simpleHbaseClient.putObject(new PersonRowKey(2), two);

    //按照主键查询。
    Person result = simpleHbaseClient.findObject(new PersonRowKey(1),
            Person.class);
    log.info(result);

    //按照范围查询
    List<Person> resultList = simpleHbaseClient.findObjectList(
            new PersonRowKey(1), new PersonRowKey(3), Person.class);
    log.info(resultList);

    //动态语句查询
    Map<String, Object> para = new HashMap<String, Object>();
    para.put("id", 0);

    resultList = simpleHbaseClient.findObjectList(new PersonRowKey(1),
            new PersonRowKey(3), Person.class, "queryByNameAndAge", para);
    log.info(resultList);

    //动态语句查询
    para.put("name", "allen");
    para.put("age", 0);
    resultList = simpleHbaseClient.findObjectList(new PersonRowKey(1),
            new PersonRowKey(3), Person.class, "queryByNameAndAge", para);
    log.info(resultList);

    //删除批量数据。
    simpleHbaseClient.deleteObjectList(new PersonRowKey(0),
            new PersonRowKey(100));

}
1
1
分享到:
评论

相关推荐

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

    NULL 博文链接:https://zhang-xzhi-xjtu.iteye.com/blog/1953939

    HBase轻量级中间件simplehbase.zip

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

    hbase orm simplehbase v1.0

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

    HBase轻量级框架Parrot

    NULL 博文链接:https://gao-xianglong.iteye.com/blog/2072293

    simpleHbase1.0

    java和hbase轻量级中间件的介绍,包含demo,如何用java操作hbase

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

    hbase-sdk是基于hbase-client和hbase-thrift的原生API封装的一款轻量级的HBase ORM框架。 针对HBase各版本API(1.x~2.x)间的差异,在其上剥离出了一层统一的抽象。并提供了以类SQL的方式来读写HBase表中的数据。对...

    HBase二级索引

    本方案主要参照了华为公布的HBase二级索引实现方案。基于hadoop平台,设计了Hbase的二级索引机制。

    Hbase 二级索引方案

    Indexer 索引和搜索不会影响 HBase 运行的稳定性和 HBase 数据写入的吞吐量,因为索引和 搜索过程是完全分开并且异步的。Lily HBase Indexer 在 CDH5 中运行必须依赖 HBase、 SolrCloud 和 Zookeeper 服务。

    基于hbase的企业级大数据平台

    基于hbase的企业级大数据平台,

    360HBASE二级索引的设计与实践

    奇虎360 HBASE 二级索引的设计与实践 pdf 完整版,支持千亿级数据量

    hbase创建二级索引

    public class IndexBuilder3 extends Configured{ public static class MapperIndex extends TableMapper,Put&gt;{ private String tableName; private String columnFamily; private String[] qualifiers;...

    Hbase基本用法简介

    Hbase shell 、Hbase api、Hbase 配置

    HortonWorks-HBase的企业级应用-Ted-Yu.zip

    HortonWorks 介绍HBase的企业级应用,以及HBase最新特性 HortonWorks 介绍HBase的企业级应用,以及HBase最新特性 HortonWorks 介绍HBase的企业级应用,以及HBase最新特性

    hadoop hbase 错误日志级解决

    3,ERROR: org.apache.hadoop.hbase.MasterNotRunningException: Retried 7 times 4,ERROR: org.apache.hadoop.hbase.MasterNotRunningException: Retried 7 times 这是我亲自遇到过的错误及解决过程,希望对大家...

    HbaseTemplate 操作hbase

    java 利用 sping-data-hadoop HbaseTemplate 操作hbase find get execute 等方法 可以直接运行

    hbase 2级索引

    基于Solr的HBase多条件查询原理很简单,将HBase表中涉及条件过滤的字段和rowkey在Solr中建立索引,通过Solr的多条件查询快速获得符合过滤条件的rowkey值,拿到这些rowkey之后在HBASE中通过指定rowkey进行查询。

    HortonWorks-HBase的企业级应用-Ted-Yu

    HortonWorks 介绍HBase的企业级应用,以及HBase最新特性

Global site tag (gtag.js) - Google Analytics