28-hadoop-hbase入门小程序
hbase的完全分布式建立起来了, 可以试下好使不
1, 导包, {HBASE_HOME}/lib 下所有的jar包, 导入
2, 使用junit测试, 会报错, 因为缺少一个jar
3, 获取链接, 只需要提供zookeeper的地址即可
/**
* 获取链接, 只需要zookeeper的链接就可了
*/
@Before
public void beforeTest() throws IOException {
Configuration conf = HBaseConfiguration.create();
// hbase端口默认2181, 可以使用hbase.zookeeper.property.clientPort设置
conf.set("hbase.zookeeper.quorum", "192.168.208.106,192.168.208.107,192.168.208.108");
// 去的数据库连接对象
connect = ConnectionFactory.createConnection(conf);
} /**
* 关闭资源
*/
@After
public void afterTest() throws IOException {
if (connect != null) {
connect.close();
}
}
4, 新建表
@Test
public void testCreate() throws IOException {
//去的一个数据库元操作对象
Admin admin = connect.getAdmin();
if (admin.tableExists(table)) {
// 删除需要先disable
admin.disableTable(table);
admin.deleteTable(table);
}
// 创建表描述对象
HTableDescriptor htable = new HTableDescriptor(table); // 创建列族描述对象
HColumnDescriptor hColumn = new HColumnDescriptor("cf1".getBytes());
hColumn.setMaxVersions();
hColumn.setBlockCacheEnabled(true);
hColumn.setBlocksize(); // 数据库中新建一个列族
htable.addFamily(hColumn);
// 新建数据库
admin.createTable(htable);
}
5, 插入模拟数据
/**
* 数据插入
*/
@Test
public void testInsert() throws IOException {
Table table = connect.getTable(tableName); List<Put> list = new ArrayList<>(); for (int i = ; i < ; i++) {
int month = i % ;
int day = i % ;
Put put = new Put(getRowKey("", month, day).getBytes());
// 列1
put.addColumn("cf1".getBytes(), "address".getBytes(), "bj".getBytes());
// 列2
put.addColumn("cf1".getBytes(), "type".getBytes(), String.valueOf(random.nextInt()).getBytes());
list.add(put);
}
table.put(list);
table.flushCommits();
}
生成模拟rowkey的方法为:
/**
* rowkey 生成策略, 电话号 + 日期
*/
public String getRowKey(String prePhone, int month, int day) {
return prePhone + random.nextInt() + "_2017" + month + day;
}
6, 根据rowkey进行查询
因为, rowkey 默认按照字典进行排序
/**
* 根据rowkey 查询
* @throws IOException
*/
@Test
public void scan() throws IOException {
Table table = connect.getTable(tableName);
//rowkey 按照字典排序, 所以可以截取
Scan scan = new Scan("13862288854_201700".getBytes(), "13899338829_201714".getBytes());
ResultScanner scanner = table.getScanner(scan); for (Iterator<Result> iterator = scanner.iterator(); iterator.hasNext(); ) {
Result next = iterator.next();
byte[] value = next.getValue("cf1".getBytes(), "type".getBytes());
System.out.println(new String(value, "utf8"));
}
}
7, filter条件过滤
更多可见: http://hbase.apache.org/book.html#client.filter 第67条, 82.8 条
更多filter, 找了个比较详细的博客: http://blog.csdn.net/cnweike/article/details/42920547
@Test
public void filter() throws IOException {
// All表示全部匹配, 相当于and, one 相当于 or
FilterList filterList = new FilterList(FilterList.Operator.MUST_PASS_ALL); // 查询某一个电话, type 等于 1
PrefixFilter prefixFilter = new PrefixFilter("".getBytes());
SingleColumnValueFilter singleColumnValueFilter = new SingleColumnValueFilter("cf1".getBytes(), "type".getBytes(), CompareFilter.CompareOp.EQUAL, "".getBytes());
// 过滤器是对结果排序, 所以顺序影响效率
filterList.addFilter(prefixFilter);
filterList.addFilter(singleColumnValueFilter); // 创建查询对象
Scan scan = new Scan();
scan.setFilter(filterList);
Table table = connect.getTable(tableName);
ResultScanner scanner = table.getScanner(scan); for (Result result : scanner) {
byte[] value = result.getValue("cf1".getBytes(), "type".getBytes());
System.out.println(new String(value, "utf8"));
} }
8, 根据单个rowkey查询
@Test
public void testGet() throws IOException {
Table table = connect.getTable(tableName);
Get get = new Get("13899126419_201717".getBytes()); Result result = table.get(get);
Cell cell = result.getColumnLatestCell("cf1".getBytes(), "address".getBytes());
System.out.println(new String(cell.getValueArray(), "utf8"));
}
系列来自尚学堂视频
28-hadoop-hbase入门小程序的更多相关文章
- Spring IoC、DI入门小程序
Alt+/智能提示xml配置文件节点及属性:在接口上使用Ctrl+T可以提示其实现类 一.IoC控制反转(将创建对象的权利交给spring)入门小程序 1.引入jar包 2.工程基本结构 3.新建Us ...
- 40个Python入门小程序
有不少同学学完Python后仍然很难将其灵活运用.我整理 37 个Python入门的小程序.在实践中应用Python会有事半功倍的效果. 分享 Github 项目,里面收集了 Python 学习资料 ...
- springMVC学习笔记(二)-----注解和非注解入门小程序
最近一直在做一个电商的项目,周末加班,忙的都没有时间更新博客了.终于在上周五上线了,可以轻松几天了.闲话不扯淡了,继续谈谈springMvc的学习. 现在,用到SpringMvc的大部分使用全注解配置 ...
- WebService概述和CXF入门小程序
一. 什么是WedService? WebService不是框架, 甚至不是一种技术, 而是一种跨平台,跨语言的规范, WebService的出现是为了解决这种需求场景: 不同平台, 不同语言所编写的 ...
- Spring MVC 的环境搭建和入门小程序
1.1.下载spring框架包. 1.1.1百度搜索Spring Framework. 进入spring官网,在网页右边选择想要下载的版本.如图 1.1.2进入页面按Ctrl+F搜索Distribut ...
- 微信小程序导航:官方工具+精品教程+DEMO集合(1月7更新)
1:官方工具:https://mp.weixin.qq.com/debug/w ... tml?t=14764346784612:简易教程:https://mp.weixin.qq.com/debug ...
- 微信小程序之小豆瓣图书
最近微信小程序被炒得很火热,本人也抱着试一试的态度下载了微信web开发者工具,开发工具比较简洁,功能相对比较少,个性化设置也没有.了解完开发工具之后,顺便看了一下小程序的官方开发文档,大概了解了小程序 ...
- 【开源】微信小程序、小游戏以及 Web 通用 Canvas 渲染引擎 - Cax
Cax 小程序.小游戏以及 Web 通用 Canvas 渲染引擎 Github → https://github.com/dntzhang/cax 点我看看 DEMO 小程序 DEMO 正在审核中敬请 ...
- 利用Bomb打造自己的小程序
小程序开发 Bomb免费后端云开发 首先,小程序的开发已是热门,一个前段技术人员必备的技术就是开发小程序.在这里推荐一个入门小程序文章(连胜出品). 对于小程序的入门开发就不再做详细介绍,这里针对Bm ...
随机推荐
- 20170905工作日记--listview优化大全
1. 适配器设计模式 实例描述:我们国家的电器使用普通的扁平两项或三项插头,而去外国的话,使用的标准就不一样了,比如德国,使用的是两项圆头的插头,那么我们使用的手机充电器插头无法插到德国的插排中去,那 ...
- MySQL修改root密码的3种方法
方法1: 用SET PASSWORD命令 mysql -u rootmysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass' ...
- C#-VS发布网站-摘
在vs生成发布文件 现在已经有了网站,可以发布了.可以将网站发布到您可以使用 Visual Studio 支持的任何连接协议访问的任何位置.复制网站有下面几种方式可选: 复制到本地计算机上的文件夹. ...
- kepware http接口 java语言开发
读取某变量的值(OK HTTP OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .u ...
- android 数据库更新
SQLiteOpenHelper封装 继承SQLiteOpenHelper类,在构造方法中分别需要传入Context,数据库名称,CursorFactory(一般传入null,为默认数据库 ...
- 当有多个form表单请求时如何处理?
问题:当有多个表单请求时如何处理?两种获取form表单 name属性值来区分是哪一个form表单.问题:如何获取name的值呢?<form name="myForm" met ...
- AngularJS $scope 继承性 作用 生命周期
一.基本概念 作用域是一个指向应用模型的对象,相当于MVVM中的ViewModel,能绑定数据(属性)和行为(方法),能监控表达式和传递事件,是实现双向绑定的基础,是应用在 HTML (视图) 和 J ...
- PCB中实现元器件旋转一个角度放置
我们常常放置器件都是横着或者竖着的...但是有时候需要器件能旋转一个角度放更方便的话,可以这样 设置器件的属性.....
- CxGrid筛选自动添加百分号和默认旧的滚动条样式
CxGrid筛选自动添加百分号和默认旧的滚动条样式 2018-10-29 Delphi 约 693 字 预计阅读 2 分钟 文章目录 cxGrid支持使用like过滤时自动添加百分号 DevExpr ...
- Linux-用户及权限
1. 用户组 RHEL 7/CentOS 7系统中的用户组有如下3类: 超级用户,UID 0:系统的超级用户. 系统用户,UID 1-999:系统中系统服务由不同用户运行,更加安全,默认被限制不能登录 ...