hbase的完全分布式建立起来了, 可以试下好使不

1, 导包, {HBASE_HOME}/lib 下所有的jar包, 导入

2, 使用junit测试, 会报错, 因为缺少一个jar

3, 获取链接, 只需要提供zookeeper的地址即可

    /*** 获取链接, 只需要zookeeper的链接就可了*/@Beforepublic 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);}/*** 关闭资源*/@Afterpublic void afterTest() throws IOException {if (connect != null) {connect.close();}}

4, 新建表

    @Testpublic 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(5);hColumn.setBlockCacheEnabled(true);hColumn.setBlocksize(1800000);// 数据库中新建一个列族
        htable.addFamily(hColumn);// 新建数据库
        admin.createTable(htable);}

5, 插入模拟数据

    /*** 数据插入*/@Testpublic void testInsert() throws IOException {Table table = connect.getTable(tableName);List<Put> list = new ArrayList<>();for (int i = 0; i < 1000; i++) {int month = i % 3;int day = i % 9;Put put = new Put(getRowKey("138", month, day).getBytes());// 列1put.addColumn("cf1".getBytes(), "address".getBytes(), "bj".getBytes());// 列2put.addColumn("cf1".getBytes(), "type".getBytes(), String.valueOf(random.nextInt(2)).getBytes());list.add(put);}table.put(list);     table.flushCommits();}

生成模拟rowkey的方法为:

    /*** rowkey 生成策略, 电话号 + 日期*/public String getRowKey(String prePhone, int month, int day) {return prePhone + random.nextInt(99999999) + "_2017" + month + day;}

6, 根据rowkey进行查询

因为, rowkey 默认按照字典进行排序

    /*** 根据rowkey 查询* @throws IOException*/@Testpublic 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

    @Testpublic void filter() throws IOException {// All表示全部匹配, 相当于and, one 相当于 orFilterList filterList = new FilterList(FilterList.Operator.MUST_PASS_ALL);// 查询某一个电话, type 等于 1PrefixFilter prefixFilter = new PrefixFilter("1388".getBytes());SingleColumnValueFilter singleColumnValueFilter = new SingleColumnValueFilter("cf1".getBytes(), "type".getBytes(), CompareFilter.CompareOp.EQUAL, "1".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查询

    @Testpublic 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. 简单Python入门小程序

    简单Python入门小程序 简单Python入门小程序 1.猜拳击小游戏,三次后结束.石头-0,剪刀-1,布-2,如果输入错误则提示错误输入. import random i=0 while 1:pe ...

  2. java mvc 小程序_[Java教程]Spring MVC 的环境搭建和入门小程序

    [Java教程]Spring MVC 的环境搭建和入门小程序 0 2017-02-17 00:00:16 1.1.下载spring框架包. 1.1.1百度搜索Spring Framework. 进入s ...

  3. 视频教程-5小时零基础入门小程序云开发-微信开发

    5小时零基础入门小程序云开发 码农一枚,非著名全栈开发人员.分享自己的一些经验,学习心得,希望后来人少走弯路,少填坑. 多年全栈开发经验,擅长小程序,java,安卓,web前端开发. 邱石 ¥29.0 ...

  4. 零基础入门小程序,实战经验分享

    讲师介绍:连胜大佬曾经就职于点心移动 & 百度,折腾小程序也有段时间了,参与开发的"小小签到"小程序,在2017年荣获阿拉丁神灯奖.我公司开发了多个工具类小程序,已有四款小 ...

  5. 《微信小程序》入门小程序-商城小demo的实现

    前言 承接上一篇<入门小程序>,希望通过这个简单的商城demo可以更好的学习并理解微信小程序的开发: (PS:本文接口和图片资源来自于某位老师的网课,为了防止说打广告,因此不放链接了,布局 ...

  6. SpringBoot 入门小程序

    SpringBoot 入门小程序CSDN下载 SpringBoot 入门小程序GitHub下载 老规矩,先看项目结构. 有必要参考前面的博客.maven构建web工程 我们构建好maven工程之后,用 ...

  7. 40个Python入门小程序

    有不少同学学完Python后仍然很难将其灵活运用.我整理 37 个Python入门的小程序.在实践中应用Python会有事半功倍的效果. 例子1:华氏温度转换为摄氏温度 华氏温度转摄氏温度的公式:C ...

  8. 入门小程序·搭建论坛

    小程序云开发的b站官方入门视频,https://www.bilibili.com/video/BV1Kt41177EH?p=1 不管看没看,不管看没看懂,反正知道我们云开发是小程序主推的发展方向,用就 ...

  9. 15个Python入门小程序,同事准时下班“小技巧”被我发现了

    有不少同学学完Python后仍然很难将其灵活运用.我整理15个Python入门的小程序.在实践中应用Python会有事半功倍的效果. 01 实现二元二次函数 实现数学里的二元二次函数:f(x, y) ...

  10. 15个入门小程序,你都知道哪些

    有不少同学学完Python后仍然很难将其灵活运用.我整理15个Python入门的小程序.在实践中应用Python会有事半功倍的效果. 01 实现二元二次函数 实现数学里的二元二次函数:f(x, y) ...

最新文章

  1. DPlayer快速上手实验
  2. linux 常用命令20190917
  3. 请讲一下浏览器从接收到一个URL,到最后展示出页面,经历了哪些过程
  4. Android_动态壁纸介绍
  5. r语言 断轴 画图_R语言作图——Density plot
  6. mysql unique count_MySQL - Count Number of Unique Values
  7. es6 Promise,生成器函数,async
  8. AfxMessageBox
  9. canvas 2.0
  10. [HNOI2008]越狱(luogu P3197)
  11. book118可预览文档下载
  12. 为Macbook添加自己喜欢的英汉辞典
  13. matlab的解线性方程组
  14. 诡异事件之自定义UINavigationController
  15. 代码故障检测列表(持续更新)
  16. cdh3.6.2集成zeppelin0.10.1及简单使用
  17. ASP.NET失物招领网站包含(寻物启事+感谢信+通知公告)c#开发
  18. Qt数字电子钟(根据进位计算实现)
  19. arduino 嗡鸣器 音乐_Arduino 蜂鸣器音乐代码转化程序开发
  20. STM32F0两路AD配置参考

热门文章

  1. 以厘php框架 v10.6.8
  2. 电子商务企业整站模板
  3. c高级语言程序设计B试题,高级语言程序设计试题(B)卷.doc
  4. linux导入lifd文件乱码,wget文件名中文乱码
  5. oracle jinitiator版本太旧,Oracle Jinitiator 版本太旧或过低怎么办
  6. element UI框架Fr Cover主题插画下载模板V2.0
  7. 很火的仿soul交友盲盒1.0全开源源码
  8. 网站域名检测是否被QQ/微信拦截工具
  9. ExpressJS入门指南
  10. @@IDENTITY与SCOPE_IDENTITY()