`

(转载)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 

Java代码  收藏代码
  1. private static SimpleHbaseClient getSimpleHbaseClient() {  
  2.     HBaseDataSource hbaseDataSource = new HBaseDataSource();  
  3.     List<String> hbaseConfigFilePaths = new ArrayList<String>();  
  4.     //hbase配置文件。  
  5.     hbaseConfigFilePaths.add("sample\\hbase_site");  
  6.     //zk配置文件。  
  7.     hbaseConfigFilePaths.add("sample\\zk_conf");  
  8.     hbaseDataSource.setHbaseConfigFilePaths(hbaseConfigFilePaths);  
  9.     hbaseDataSource.init();  
  10.   
  11.     HBaseTableConfig hbaseTableConfig = new HBaseTableConfig();  
  12.     //simplehbase配置文件。  
  13.     hbaseTableConfig.setConfigFilePath("sample\\myRecord.xml");  
  14.     hbaseTableConfig.init();  
  15.   
  16.     SimpleHbaseClient tClient = new SimpleHbaseClientImpl();  
  17.     tClient.setHBaseDataSource(hbaseDataSource);  
  18.     tClient.setHbaseTableConfig(hbaseTableConfig);  
  19.   
  20.     return tClient;  
  21. }  



simplehbase配置xml 

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

Java代码  收藏代码
  1. <HBaseTableSchema tableName="MyRecord" defaultFamily="MyRecordFamily">  
  2.     <HBaseColumnSchema qualifier="id" typeName="int" />  
  3.     <HBaseColumnSchema qualifier="name" typeName="string" />  
  4.     <HBaseColumnSchema qualifier="date" typeName="date" />  
  5.     <HBaseColumnSchema qualifier="gender" typeName="allen.sample.Gender" />  
  6.     <HBaseColumnSchema qualifier="age" typeName="int" />  
  7. </HBaseTableSchema>  
  8.   
  9. <statements>      
  10.     <statement id="queryByNameAndAge">  
  11.         select where id greater #id#  
  12.         <isPropertyAvailable prepend="and" property="name">  
  13.             name equal #name#  
  14.         </isPropertyAvailable>  
  15.         <isPropertyAvailable prepend="and" property="age">  
  16.             age greater #age#  
  17.         </isPropertyAvailable>  
  18.     </statement>          
  19. </statements>   

  

定义DO对象 

Java代码  收藏代码
  1. @HBaseTable(defaultFamily = "MyRecordFamily")  
  2. public class Person {  
  3.     @HBaseColumn(qualifier = "id")  
  4.     private int    id;  
  5.     @HBaseColumn(qualifier = "name")  
  6.     private String name;  
  7.     @HBaseColumn(qualifier = "date")  
  8.     private Date   date;  
  9.     @HBaseColumn(qualifier = "gender")  
  10.     private Gender gender;  
  11.     @HBaseColumn(qualifier = "age")  
  12.     private int    age;  
  13. }  



定义该htable的rowkey 

Java代码  收藏代码
  1. public class PersonRowKey implements RowKey {  
  2.   
  3.     private int row;  
  4.   
  5.     public PersonRowKey(int row) {  
  6.         this.row = row;  
  7.     }  
  8.   
  9.     @Override  
  10.     public byte[] toBytes() {  
  11.         return Bytes.toBytes(row);  
  12.     }  
  13. }  



使用simplehbaseclient操作hbase 

Java代码  收藏代码
  1. public static void main(String[] args) throws Exception {  
  2.   
  3.     SimpleHbaseClient simpleHbaseClient = getSimpleHbaseClient();  
  4.   
  5.     //插入一条记录。  
  6.     Person one = new Person();  
  7.     one.setId(1);  
  8.     one.setName("allen");  
  9.     one.setAge(30);  
  10.     one.setGender(Gender.MALE);  
  11.     simpleHbaseClient.putObject(new PersonRowKey(1), one);  
  12.   
  13.     //插入一条记录。  
  14.     Person two = new Person();  
  15.     two.setId(2);  
  16.     two.setName("dan");  
  17.     two.setAge(31);  
  18.     two.setGender(Gender.FEMALE);  
  19.     simpleHbaseClient.putObject(new PersonRowKey(2), two);  
  20.   
  21.     //按照主键查询。  
  22.     Person result = simpleHbaseClient.findObject(new PersonRowKey(1),  
  23.             Person.class);  
  24.     log.info(result);  
  25.   
  26.     //按照范围查询  
  27.     List<Person> resultList = simpleHbaseClient.findObjectList(  
  28.             new PersonRowKey(1), new PersonRowKey(3), Person.class);  
  29.     log.info(resultList);  
  30.   
  31.     //动态语句查询  
  32.     Map<String, Object> para = new HashMap<String, Object>();  
  33.     para.put("id"0);  
  34.   
  35.     resultList = simpleHbaseClient.findObjectList(new PersonRowKey(1),  
  36.             new PersonRowKey(3), Person.class"queryByNameAndAge", para);  
  37.     log.info(resultList);  
  38.   
  39.     //动态语句查询  
  40.     para.put("name""allen");  
  41.     para.put("age"0);  
  42.     resultList = simpleHbaseClient.findObjectList(new PersonRowKey(1),  
  43.             new PersonRowKey(3), Person.class"queryByNameAndAge", para);  
  44.     log.info(resultList);  
  45.   
  46.     //删除批量数据。  
  47.     simpleHbaseClient.deleteObjectList(new PersonRowKey(0),  
  48.             new PersonRowKey(100));  
  49.   
  50. }  
分享到:
评论

相关推荐

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

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

    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轻量级框架Parrot

    **标题:“HBase轻量级框架Parrot”** 在大数据处理领域,Apache HBase是一个流行的分布式、面向列的NoSQL数据库,它构建于Hadoop之上,提供了实时的随机读写能力。然而,对于某些特定场景,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 二级索引 HBase 二级索引是指在 HBase 之上建立的一种二级索引机制,用于提高查询效率。根据华为公布的 HBase 二级索引实现方案,本方案主要参照了该方案,设计了 HBase 的二级索引机制。 知识点一:HBase ...

    simpleHbase1.0

    SimpleHbase1.0,作为一款轻量级的Java与Hbase交互中间件,它的出现极大地简化了Java开发者在处理Hbase数据时的操作流程。这款工具以其高效、易用的特点,深受广大开发者的青睐。下面我们将详细探讨SimpleHbase1.0的...

    hbase二级索引

    二级索引在HBase中的应用,是为了弥补其一级索引(RowKey索引)的不足,它为非RowKey字段提供了快速访问的通道。 首先,我们需要理解HBase的一级索引。HBase的表数据是按照RowKey排序存储的,RowKey是唯一标识一条...

    CDH使用Solr实现HBase二级索引.docx

    CDH 使用 Solr 实现 HBase 二级索引 在大数据处理中,HBase 是一种流行的 NoSQL 数据库,用于存储大量的数据。然而,在查询和检索数据时,HBase 的性能可能不太理想。这是因为 HBase 是基于 Key-Value 的存储方式,...

    HbaseTemplate 操作hbase

    在IT行业中,尤其是在大数据处理领域,HBase是一个广泛使用的分布式、高性能、列式存储的NoSQL数据库。HBase是建立在Hadoop文件系统(HDFS)之上,为处理大规模数据提供了一个高效的数据存储解决方案。而Spring Data...

    Hbase分布式数据库 v1.7.2.zip

    HBase提供毫秒级的实时读写性能,适用于需要快速响应的应用场景,如物联网、实时监控等。 **9. 客户端API** HBase提供了多种客户端API,包括Java、Python、PHP等,方便开发人员进行数据操作和应用开发。 **10. ZK...

    hbase创建二级索引

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

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

    ### 360HBASE二级索引的设计与实践 #### 背景 在大数据处理领域,特别是面对海量数据(如千亿级别的数据量)时,高效的数据存储与快速查询成为了关键的技术挑战之一。HBase作为一种分布式、面向列的NoSQL数据库...

    Hbase基本用法简介

    Hbase shell 、Hbase api、Hbase 配置

    Hbase二级索引与JOIN

    ### HBase二级索引与JOIN知识点详解 #### HBase简介 - **定义**: HBase是一种分布式、面向列的NoSQL数据库系统,它基于Google Bigtable论文实现。 - **底层架构**: HBase的数据存储依赖于Hadoop Distributed File ...

Global site tag (gtag.js) - Google Analytics