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. chrome用type=file获取图片路径并转base64字符串

    1 html页面 <div class="col-sm-2" style="height: 200px;margin-top: 14px;"> &l ...

  2. vs和vim

    vs:win+R键 输入DEVENV(DEV代表development,ENV代表environment)可以召唤vs,但是有的时候召唤不出来,是因为你的vs安装在c盘program里也就是默认安装, ...

  3. 20155326 2016-2017-2《Java程序设计》课程总结

    20155326 2016-2017-2<Java程序设计>课程总结 (按顺序)每周作业链接汇总 20155326刘美岑的第一次作业:第一次写博客,写下了对java的期待 20155326 ...

  4. stm32f103_高级定时器——输入捕获/输出比较中断+pwm=spwm生成

    ****************************首选我们了解一下它们的功能吧********************************************************** ...

  5. ElementTriArgyris

    class ElementTriArgyris(ElementH2): nodal_dofs = 6 facet_dofs = 1 dim = 2 maxdeg = 5 def gdof(self, ...

  6. http发送请求方式;分为post和get两种方式

    http发送请求方式:分为post和get两种方式

  7. MySQL表名大小写设置

    1 简介    在MySQL中,数据库对应数据目录中的目录.数据库中的每个表至少对应数据库目录中的一个文件(也可能是多个,取决于存储引擎).因此,所使用操作系统的大小写敏感性决定了数据库名和表名的大小 ...

  8. 工作随笔——elasticsearch 6.6.1安装(docker-compose方式)

    docker-compose.yml: version: '2.2' services: es1: image: docker.elastic.co/elasticsearch/elasticsear ...

  9. 【SPOJ10707】 COT2 Count on a tree II

    SPOJ10707 COT2 Count on a tree II Solution 我会强制在线版本! Solution戳这里 代码实现 #include<stdio.h> #inclu ...

  10. 《Python黑帽子:黑客与渗透测试编程之道》 Windows系统提权

    环境准备: pywin32的安装在第八章的键盘记录中有,这里还需要安装wmi: 在本人的32位win7上本来是没有easy_install这个命令的,这需要安装setuptools-0.6c11.wi ...