- 浏览: 524429 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
飞天奔月:
public List<String> gener ...
实践中的重构30_不做油漆匠 -
在世界的中心呼喚愛:
在世界的中心呼喚愛 写道public class A {
...
深入理解ReferenceQueue GC finalize Reference -
在世界的中心呼喚愛:
在世界的中心呼喚愛 写道在世界的中心呼喚愛 写道在classB ...
深入理解ReferenceQueue GC finalize Reference -
在世界的中心呼喚愛:
在世界的中心呼喚愛 写道在classB的finalize上打断 ...
深入理解ReferenceQueue GC finalize Reference -
在世界的中心呼喚愛:
iteye比较少上,如果可以的话,可以发e-mail交流:ch ...
深入理解ReferenceQueue GC finalize Reference
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
simplehbase配置xml
包含htable的配置和一个动态查询的配置
定义DO对象
定义该htable的rowkey
使用simplehbaseclient操作hbase
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)); }
发表评论
-
simplehbase v0.98.1开始支持hbase0.98
2014-12-29 21:52 745https://github.com/zhang-xzhi/s ... -
hbase轻量级中间件simplehbase v1.0简介
2014-12-13 18:56 915https://github.com/zhang-xzhi/s ... -
hbase的CoprocessorProtocol及一个简单的通用扩展实现V2
2014-12-04 18:02 818hbase中的CoprocessorProtocol机制. ... -
hbase 0.94.0 0.94.9 0.94.24 功能不兼容初步分析
2014-12-04 16:14 562hbase 0.94.0 0.94.9 0.94.24 功能不 ... -
可以查看java对象的MemoryUtil简介
2014-09-14 21:01 1222MemoryUtil 关于java对象内存的基本知识,请参考 ... -
java对象的大小_基础知识
2014-09-14 20:59 944引言 Java的对象被jvm管理,单个对象如何布局,大小如何, ... -
gcviewer v0.3 一个解析CMS GC日志的GUI程序
2014-09-07 23:00 989GCviewer https://github.com/z ... -
simplehbase版本变更
2014-07-14 13:42 696https://github.com/zhang-xzhi/s ... -
hbase ORM simplehbase/simplehbaseviewer v0.8简介及使用说明
2014-05-07 00:50 978https://github.com/zhang-xzhi/s ... -
HBase Client使用注意点
2014-04-21 12:52 1923HBase Client使用注意点: 1 HTable线程 ... -
文件编码自动检测及编码转换encodechecker v0.5
2014-04-15 00:35 1723由于很多软件都不能准确自动识别文件编码,因此写了个文件编码识别 ... -
[perf] java常用基本操作性能测试-异常
2014-03-08 09:53 1096性能测试: 由于软硬件及其复杂,本结果只具有参考意义。 代码: ... -
[perf] java常用基本操作性能测试-反射
2014-03-07 13:06 1044性能测试: 由于软硬件及其复杂,本结果只具有参考意义。 代码: ... -
mysql的一些性能数据
2012-12-01 16:04 933这个并不是一个严谨的性能测试,而是就简单的一些场景记录一些数据 ... -
有关于时间
2012-12-01 15:55 904int型如果表示ms的话,那也就是24天而已。 double ... -
我对移位操作的误解
2012-11-30 20:52 891一直以为java的移位操作只能操作int,原来是自己的误解。l ... -
Java Concurrency in Practice读书笔记
2011-08-13 10:03 2839目录 Chapter 1. Introduction 2 1. ... -
bug fix 记录
2011-01-07 21:58 1167p1 Caused by: org.xml.sax.SAXP ... -
实践中的重构10_平铺直叙的代码(new)
2011-01-06 00:09 686很多应用程序的主要目的就是用计算机来代替人处理真实世界 ... -
实践中的重构01-05
2010-11-13 01:06 1122目录 实践中的重构01_ ...
相关推荐
NULL 博文链接:https://zhang-xzhi-xjtu.iteye.com/blog/1953939
simplehbase是java和hbase之间的轻量级中间件。 主要包含以下功能。 数据类型映射:java类型和hbase的bytes之间的数据转换。 简单操作封装:封装了hbase的put,get,scan等操作为简单的java操作方式。 hbase ...
simplehbase是java和hbase之间的轻量级中间件。 主要包含以下功能。 数据类型映射:java类型和hbase的bytes之间的数据转换。 简单操作封装:封装了hbase的put,get,scan等操作为简单的java操作方式。 hbase query...
NULL 博文链接:https://gao-xianglong.iteye.com/blog/2072293
java和hbase轻量级中间件的介绍,包含demo,如何用java操作hbase
hbase-sdk是基于hbase-client和hbase-thrift的原生API封装的一款轻量级的HBase ORM框架。 针对HBase各版本API(1.x~2.x)间的差异,在其上剥离出了一层统一的抽象。并提供了以类SQL的方式来读写HBase表中的数据。对...
本方案主要参照了华为公布的HBase二级索引实现方案。基于hadoop平台,设计了Hbase的二级索引机制。
Indexer 索引和搜索不会影响 HBase 运行的稳定性和 HBase 数据写入的吞吐量,因为索引和 搜索过程是完全分开并且异步的。Lily HBase Indexer 在 CDH5 中运行必须依赖 HBase、 SolrCloud 和 Zookeeper 服务。
基于hbase的企业级大数据平台,
奇虎360 HBASE 二级索引的设计与实践 pdf 完整版,支持千亿级数据量
public class IndexBuilder3 extends Configured{ public static class MapperIndex extends TableMapper,Put>{ private String tableName; private String columnFamily; private String[] qualifiers;...
Hbase shell 、Hbase api、Hbase 配置
HortonWorks 介绍HBase的企业级应用,以及HBase最新特性 HortonWorks 介绍HBase的企业级应用,以及HBase最新特性 HortonWorks 介绍HBase的企业级应用,以及HBase最新特性
3,ERROR: org.apache.hadoop.hbase.MasterNotRunningException: Retried 7 times 4,ERROR: org.apache.hadoop.hbase.MasterNotRunningException: Retried 7 times 这是我亲自遇到过的错误及解决过程,希望对大家...
java 利用 sping-data-hadoop HbaseTemplate 操作hbase find get execute 等方法 可以直接运行
基于Solr的HBase多条件查询原理很简单,将HBase表中涉及条件过滤的字段和rowkey在Solr中建立索引,通过Solr的多条件查询快速获得符合过滤条件的rowkey值,拿到这些rowkey之后在HBASE中通过指定rowkey进行查询。
HortonWorks 介绍HBase的企业级应用,以及HBase最新特性