收藏私塾在线
 

欢迎您来到私塾在线网!   

请登录! 

免费注册 

交流首页 » 数据库 »hbase轻量级中间件simplehbase v0.2简介  XML
发表人 内容
helloJava
[头像]

交流经验:
总积分:470
级别:普通会员
注册时间: 2011-11-01
文章: 28
离线

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

https://github.com/zhang-xzhi/simplehbase/
https://github.com/zhang-xzhi/simplehbase/wiki
simplehbase简介

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));




推广链接
精品视频课程推荐

透彻理解JavaBean视频教程
深入浅出的讲解JavaBen的写法、JavaBean的用法、JavaBean的实现机制、JavaBean对应翻译的代码理解。

Java数据结构和算法精讲版
本课程专注于数据结构和算法的内容,使用Java来进行代码示例,不空洞的讲解概念和理论,重点放在代码的实现和示例上。 从零开始、全面系统、成体系的讲解数据结构和基本算法,循序渐进的讲述构建软件系统所常见的数据结构和算法。

研磨设计模式——跟着cc学设计系列视频教程
本视频课程是北京Java私塾原创精品书籍《研磨设计模式》一书的配套学习视频,由《研磨设计模式》的第一作者CC录制 课程目标:全面、系统的掌握GoF设计模式的知识,达到可以在实际项目开发中运用的能力 技术要点:如何实现可配置、如何实现缓存以及缓存的管理、如何实现用缓存来控制多实例的创建、如何实现参数化工厂、 如何实现可扩展工厂、如何实现原型管理器、如何实现Java的静态代理和动态代理、如何实现多线程处理队列请求、 如何实现命令的参数化配置、可撤销的操作、宏命令、队列请求和日志请求、如何实现翻页迭代、如何检测环状结构、 如何实现通用的增删改查、如何模拟工作流来处理流程、如何实现简单又通用的XML读取、如何实现模拟AOP的功能......

Java Web开发-项目部分(中国移动科技综合管理系统)视频教程
中国移动科技综合管理系统,对JDBC实现CRUD的抽象化和复用化;UUID自动生成;分层开发、综合示范Jsp+Servlet+JavaBean+TagLib+JSTL+JDBC的实现;Web分页、Web树、日期控件、真实值和表现值转换;众多杂项技术的实现,比如:tab、左右选择等等

XML基础视频教程
创建规范的XML文档,DTD的作用,并且可以根据要求创建私用的DTD,通过JavaScript解析XML DOM

 
交流首页 » 数据库
前往:   

关于我们 | 联系我们 | 用户协议 | 私塾在线服务协议 | 版权声明 | 隐私保护

版权所有 Copyright(C)2009-2012 私塾在线学习网