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));
- }
相关推荐
标题“hbase轻量级中间件simplehbase v0.1简介”揭示了我们要讨论的主题——SimpleHBase,它是一个针对Apache HBase的轻量级中间件,版本为v0.1。这个中间件可能是为了简化HBase的使用,提高开发效率而设计的。描述...
simplehbase是java和hbase之间的轻量级中间件。 主要包含以下功能。 数据类型映射:java类型和hbase的bytes之间的数据转换。 简单操作封装:封装了hbase的put,get,scan等操作为简单的java操作方式。 hbase ...
SimpleHbase是一款针对Java开发的轻量级中间件,它主要设计用于简化HBase数据库的操作。这个库提供了数据类型映射、操作封装、查询封装、动态查询、多版本支持、批量操作等一系列功能,使得Java开发者可以更加高效地...
**标题:“HBase轻量级框架Parrot”** 在大数据处理领域,Apache HBase是一个流行的分布式、面向列的NoSQL数据库,它构建于Hadoop之上,提供了实时的随机读写能力。然而,对于某些特定场景,HBase的使用可能过于...
hbase-sdk是基于hbase-client和hbase-thrift的原生API封装的一款轻量级的HBase ORM框架。 针对HBase各版本API(1.x~2.x)间的差异,在其上剥离出了一层统一的抽象。并提供了以类SQL的方式来读写HBase表中的数据。对...
HBase 二级索引 HBase 二级索引是指在 HBase 之上建立的一种二级索引机制,用于提高查询效率。根据华为公布的 HBase 二级索引实现方案,本方案主要参照了该方案,设计了 HBase 的二级索引机制。 知识点一:HBase ...
SimpleHbase1.0,作为一款轻量级的Java与Hbase交互中间件,它的出现极大地简化了Java开发者在处理Hbase数据时的操作流程。这款工具以其高效、易用的特点,深受广大开发者的青睐。下面我们将详细探讨SimpleHbase1.0的...
二级索引在HBase中的应用,是为了弥补其一级索引(RowKey索引)的不足,它为非RowKey字段提供了快速访问的通道。 首先,我们需要理解HBase的一级索引。HBase的表数据是按照RowKey排序存储的,RowKey是唯一标识一条...
CDH 使用 Solr 实现 HBase 二级索引 在大数据处理中,HBase 是一种流行的 NoSQL 数据库,用于存储大量的数据。然而,在查询和检索数据时,HBase 的性能可能不太理想。这是因为 HBase 是基于 Key-Value 的存储方式,...
在IT行业中,尤其是在大数据处理领域,HBase是一个广泛使用的分布式、高性能、列式存储的NoSQL数据库。HBase是建立在Hadoop文件系统(HDFS)之上,为处理大规模数据提供了一个高效的数据存储解决方案。而Spring Data...
HBase提供毫秒级的实时读写性能,适用于需要快速响应的应用场景,如物联网、实时监控等。 **9. 客户端API** HBase提供了多种客户端API,包括Java、Python、PHP等,方便开发人员进行数据操作和应用开发。 **10. ZK...
public class IndexBuilder3 extends Configured{ public static class MapperIndex extends TableMapper,Put>{ private String tableName; private String columnFamily; private String[] qualifiers;...
### 360HBASE二级索引的设计与实践 #### 背景 在大数据处理领域,特别是面对海量数据(如千亿级别的数据量)时,高效的数据存储与快速查询成为了关键的技术挑战之一。HBase作为一种分布式、面向列的NoSQL数据库...
Hbase shell 、Hbase api、Hbase 配置
### HBase二级索引与JOIN知识点详解 #### HBase简介 - **定义**: HBase是一种分布式、面向列的NoSQL数据库系统,它基于Google Bigtable论文实现。 - **底层架构**: HBase的数据存储依赖于Hadoop Distributed File ...