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入门小程序的更多相关文章

  1. Spring IoC、DI入门小程序

    Alt+/智能提示xml配置文件节点及属性:在接口上使用Ctrl+T可以提示其实现类 一.IoC控制反转(将创建对象的权利交给spring)入门小程序 1.引入jar包 2.工程基本结构 3.新建Us ...

  2. 40个Python入门小程序

    有不少同学学完Python后仍然很难将其灵活运用.我整理 37 个Python入门的小程序.在实践中应用Python会有事半功倍的效果. 分享 Github 项目,里面收集了 Python 学习资料 ...

  3. springMVC学习笔记(二)-----注解和非注解入门小程序

    最近一直在做一个电商的项目,周末加班,忙的都没有时间更新博客了.终于在上周五上线了,可以轻松几天了.闲话不扯淡了,继续谈谈springMvc的学习. 现在,用到SpringMvc的大部分使用全注解配置 ...

  4. WebService概述和CXF入门小程序

    一. 什么是WedService? WebService不是框架, 甚至不是一种技术, 而是一种跨平台,跨语言的规范, WebService的出现是为了解决这种需求场景: 不同平台, 不同语言所编写的 ...

  5. Spring MVC 的环境搭建和入门小程序

    1.1.下载spring框架包. 1.1.1百度搜索Spring Framework. 进入spring官网,在网页右边选择想要下载的版本.如图 1.1.2进入页面按Ctrl+F搜索Distribut ...

  6. 微信小程序导航:官方工具+精品教程+DEMO集合(1月7更新)

    1:官方工具:https://mp.weixin.qq.com/debug/w ... tml?t=14764346784612:简易教程:https://mp.weixin.qq.com/debug ...

  7. 微信小程序之小豆瓣图书

    最近微信小程序被炒得很火热,本人也抱着试一试的态度下载了微信web开发者工具,开发工具比较简洁,功能相对比较少,个性化设置也没有.了解完开发工具之后,顺便看了一下小程序的官方开发文档,大概了解了小程序 ...

  8. 【开源】微信小程序、小游戏以及 Web 通用 Canvas 渲染引擎 - Cax

    Cax 小程序.小游戏以及 Web 通用 Canvas 渲染引擎 Github → https://github.com/dntzhang/cax 点我看看 DEMO 小程序 DEMO 正在审核中敬请 ...

  9. 利用Bomb打造自己的小程序

    小程序开发 Bomb免费后端云开发 首先,小程序的开发已是热门,一个前段技术人员必备的技术就是开发小程序.在这里推荐一个入门小程序文章(连胜出品). 对于小程序的入门开发就不再做详细介绍,这里针对Bm ...

随机推荐

  1. Shell编程-10-Shell中的数组

    目录 数组基础 数组示例 数组总结     如果大家有其他语言的基础或经验,就很快能明白数组了.简单来说,数组就某一种相同类型的元素组合,而后通过下标对其进行访问各元素. 数组基础 基础语法 第一种形 ...

  2. POJ1195--Mobile phones(基础二维BIT)

    Description Suppose that the fourth generation mobile phone base stations in the Tampere area operat ...

  3. Hdu2068 RPG的错排 2017-06-27 15:27 30人阅读 评论(0) 收藏

    RPG的错排 Time Limit : 1000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Submis ...

  4. Codeforces816B Karen and Coffee 2017-06-27 15:18 39人阅读 评论(0) 收藏

    B. Karen and Coffee time limit per test 2.5 seconds memory limit per test 512 megabytes input standa ...

  5. hdu 4891 模拟水题

    http://acm.hdu.edu.cn/showproblem.php?pid=4891 给出一个文本,问说有多少种理解方式. 1. $$中间的,(s1+1) * (s2+1) * ...*(sn ...

  6. 状态 ajax

    //html部分 <a href="#" data-status="{$vo.state}" data-urid="{$vo.id}" ...

  7. adb push 和 adb pull命令

    adb push命令 :从电脑上传送文件到手机: adb pull命令 :从手机传送文件到电脑上             @Cocos 下次需要权限的目录可以执行chmod 777 目录名      ...

  8. 【转载】Configure the max limit for concurrent TCP connections

    转载地址:http://smallvoid.com/article/winnt-tcpip-max-limit.html To keep the TCP/IP stack from taking al ...

  9. Asp.Net Core探索 之 appsettings.json

    appsettings.json是什么? 相信大家在.Net Framework的项目都会用的web.config,app.config这些文件,appsettings.json文件就是Asp.Net ...

  10. ASP.NET MVC 中 Autofac依赖注入DI 控制反转IOC 了解一下

    先简单了解一这个几个 名词的意思. 控制反转(IOC) 依赖注入(DI) 并不是某种技术. 而是一种思想.一种面向对象编程法则 什么是控制反转(IOC)?  什么是依赖注入(DI) 可以点击下面链接 ...