1、需要的jar包:

commons-codec-1.4.jar

commons-logging-1.0.4.jar

hadoop-0.20.2-core.jar

hbase-0.20.6.jar

log4j-1.2.15.jar

zookeeper-3.2.2.jar

2、已有表结构:

1、表名:scores

2、列族:

course:art

course:math

grade:

3、scan 'scores'的内容:

ROW                          COLUMN+CELL                                                                     
 Jerry                       column=course:art, timestamp=1301294630194, value=80                            
 Jerry                       column=course:math, timestamp=1301294630132, value=100                          
 Jerry                       column=grade:, timestamp=1301294630073, value=2                                 
 Jim                         column=course:art, timestamp=1301294630363, value=97                            
 Jim                         column=course:math, timestamp=1301294630305, value=100                          
 Jim                         column=grade:, timestamp=1301294630247, value=3                                 
 Tom                         column=course:art, timestamp=1301294630015, value=97                            
 Tom                         column=course:math, timestamp=1301294629987, value=87                           
 Tom                         column=grade:, timestamp=1301294629931, value=1

4、代码:

[java:nogutter] view plaincopy
  1. package org.myhbase;
  2. import java.io.IOException;
  3. import java.util.ArrayList;
  4. import java.util.List;
  5. import org.apache.hadoop.conf.Configuration;
  6. import org.apache.hadoop.hbase.HBaseConfiguration;
  7. import org.apache.hadoop.hbase.KeyValue;
  8. import org.apache.hadoop.hbase.client.Get;
  9. import org.apache.hadoop.hbase.client.HTable;
  10. import org.apache.hadoop.hbase.client.Result;
  11. import org.apache.hadoop.hbase.client.ResultScanner;
  12. import org.apache.hadoop.hbase.client.Scan;
  13. import org.apache.hadoop.hbase.filter.FilterList;
  14. import org.apache.hadoop.hbase.filter.SingleColumnValueFilter;
  15. import org.apache.hadoop.hbase.filter.CompareFilter.CompareOp;
  16. import org.apache.hadoop.hbase.io.Cell;
  17. import org.apache.hadoop.hbase.util.Bytes;
  18. public class HBaseBasic03 {
  19. private static HBaseConfiguration hbaseConfig=null;
  20. static{
  21. Configuration config=new Configuration();
  22. config.set("hbase.zookeeper.quorum","192.168.10.149,192.168.10.44,192.168.10.49");
  23. config.set("hbase.zookeeper.property.clientPort", "2181");
  24. hbaseConfig=new HBaseConfiguration(config);
  25. }
  26. /**
  27. * get方式,通过rowKey查询
  28. * @param tablename
  29. * @param rowKey
  30. * @throws IOException
  31. */
  32. public static void selectByRowKey(String tablename,String rowKey) throws IOException{
  33. HTable table=new HTable(hbaseConfig,tablename);
  34. Get g = new Get(Bytes.toBytes(rowKey));
  35. Result r=table.get(g);
  36. for(KeyValue kv:r.raw()){
  37. System.out.println("column: "+new String(kv.getColumn()));
  38. System.out.println("value: "+new String(kv.getValue()));
  39. }
  40. }
  41. /**
  42. * get方式,通过rowKey、column查询
  43. * @param tablename
  44. * @param rowKey
  45. * @param column
  46. * @throws IOException
  47. */
  48. public static void selectByRowKeyColumn(String tablename,String rowKey,String column) throws IOException{
  49. HTable table=new HTable(hbaseConfig,tablename);
  50. Get g = new Get(Bytes.toBytes(rowKey));
  51. g.addColumn(Bytes.toBytes(column));
  52. Result r=table.get(g);
  53. for(KeyValue kv:r.raw()){
  54. System.out.println("column: "+new String(kv.getColumn()));
  55. System.out.println("value: "+new String(kv.getValue()));
  56. }
  57. }
  58. public static void selectByFilter(String tablename,List<String> arr) throws IOException{
  59. HTable table=new HTable(hbaseConfig,tablename);
  60. FilterList filterList = new FilterList();
  61. Scan s1 = new Scan();
  62. for(String v:arr){ // 各个条件之间是“与”的关系
  63. String [] s=v.split(",");
  64. filterList.addFilter(new SingleColumnValueFilter(Bytes.toBytes(s[0]),
  65. Bytes.toBytes(s[1]),
  66. CompareOp.EQUAL,Bytes.toBytes(s[2])
  67. )
  68. );
  69. // 添加下面这一行后,则只返回指定的cell,同一行中的其他cell不返回
  70. //          s1.addColumn(Bytes.toBytes(s[0]), Bytes.toBytes(s[1]));
  71. }
  72. s1.setFilter(filterList);
  73. ResultScanner ResultScannerFilterList = table.getScanner(s1);
  74. for(Result rr=ResultScannerFilterList.next();rr!=null;rr=ResultScannerFilterList.next()){
  75. for(KeyValue kv:rr.list()){
  76. System.out.println("row : "+new String(kv.getRow()));
  77. System.out.println("column : "+new String(kv.getColumn()));
  78. System.out.println("value : "+new String(kv.getValue()));
  79. }
  80. }
  81. }
  82. public static void main(String [] args) throws IOException{
  83. // 按rowkey查询,查询Tom行的所有cell
  84. HBaseBasic03.selectByRowKey("scores","Tom");
  85. // 按rokey 和 column 来查询,查询Tom行course列族的所有列值
  86. HBaseBasic03.selectByRowKeyColumn("scores","Tom","course");
  87. // Filter多条件查询,条件:查询 course列族中art列值为97 ,且 course列族中math列值为100的行
  88. List<String> arr=new ArrayList<String>();
  89. arr.add("course,art,97");
  90. arr.add("course,math,100");
  91. HBaseBasic03.selectByFilter("scores",arr);
  92. }
  93. }

转载于:https://www.cnblogs.com/end/archive/2012/08/23/2652455.html

java实现Hbase中的查询(一)Filter方式相关推荐

  1. 技巧 | Java 8 Stream 中异常处理的4种方式

    Stream API 和 lambda 是 Java8以来对Java的重大改进.从那时起,我们可以使用更具有功能性的语法风格的代码.但是有个问题就是,我们使用了 lambda 表达式,那 lambda ...

  2. JAVA——TCP连接中Socket的正确关闭方式

    基本概念 TCP协议:Transmission Control Protocol 传输控制协议TCP是一种面向连接(连接导向)的.可靠的.基于字节流的运输层(Transport layer)通信协议, ...

  3. jetty java 实例_java 在Jetty9中使用HttpSessionListener和Filter实例详解

    这篇文章主要介绍了java 在Jetty9中使用HttpSessionListener和Filter的相关资料,需要的朋友可以参考下 java 在Jetty9中使用HttpSessionListene ...

  4. hbase 按时刻查询_HBase读写优化

    一个系统上线之后,开发和调优将一直贯穿系统的生命周期中,HBase也不列外.这里学习下HBase的调优.Hbase查询优化 作为NoSQL数据库,增删改查是其最基本的功能,其中查询是最常用的一项.设置 ...

  5. java提取字符串中数字

    java的util工具类让我们很方便的提取字符串中的数据,提取金额,提取数据,提取主要信息等都有很大帮助,java获取字符中的信息有如下方式: Pattern pattern = Pattern.co ...

  6. java actioncontext_Struts2 ActionContext 中的数据详解

    ActionContext ActionContext是Action的上下文,Struts2自动在其中保存了一些在Action执行过程中所需的对象,比如session, parameters, loc ...

  7. Java连接HBASE数据库,创建一个表,删除一张表,修改表,输出插入,修改,数据删除,数据获取,显示表信息,过滤查询,分页查询,地理hash

    准备工作 1.创建Java的Maven项目 创建好的目录结构如下: 另外注意junit的版本,最好不要太高,最开始笔者使用的junit4.12的,发现运行的时候会报错.最后把Junit的版本改成4.7 ...

  8. Elasticsearch对Hbase中的数据建索引实现海量数据快速查询

    文章目录 一.前言 二.将项目导入Myeclipse中 方法1: 方法2: 三.准备工作 3.1 运行这个项目你得安装有hadoop和hbase集群 3.2 安装Elasticsearch集群 3.3 ...

  9. 实战:在Java Web项目中使用HBase

    在此之前我们使用MySQL作为数据源,但发现这数据增长速度太快,并且由于种种原因,因此必须使用HBase,所以我们要把Mysql表里面的数据迁移到HBase中,在这里我就不讲解.不争论为什么要使用HB ...

最新文章

  1. 开源Vue表格组件,表格插件源码
  2. 与其他CA合作签发证书 谷歌赛门铁克之争接近尾声
  3. 利用Canny边缘检测算子进行边缘检测的原理及OpenCV代码实现
  4. 为什么用lazy启动eclipse的时候,插件activator的start自动被调用
  5. 架构师成长系列 | 云原生时代的 DevOps 之道
  6. java多线程总结五:线程池的原理及实现
  7. LeetCode 869. 重新排序得到 2 的幂(排序 全排列)
  8. CompletableFuture详解~设置任务结果
  9. 第n小的质数(信息学奥赛一本通-T1099)
  10. 除了速度与激情 领克01带给我另一种有关生活方式的想象
  11. LVS--DR模型介绍及实现
  12. VBA函数 find
  13. Quartz CronTrigger最完整触发时间配置说明
  14. 文档处理 - 复杂Excel文档
  15. 【大厂面试必备系列】滑动窗口协议
  16. 海康威视摄像头连接(.net)
  17. 【安全知识分享】重磅|消防控制室培训.ppt(附下载)
  18. 软件测试人员提升测试技能的10个妙招分享
  19. java程序员月薪一万很难?(要到什么程度)
  20. SpringBoot 默认数据库连接池 HikariCP

热门文章

  1. Python3赋值运算符
  2. Jackson使用示例:将Java对象转换成Map
  3. JVM 调优实战--可视化GC日志分析工具GC Easy使用教程
  4. android 发送重启广播,Android实现关机重启的方法分享
  5. 从ucOS谈,为什么需要操作系统?
  6. c语言菜单程序循环结构举例,C语言程序设计课件 第4章 循环结构.ppt
  7. probable oracle net,ORA-28547: connection to server failed, probable Oracle Net admin error
  8. WebRTC / Jitsi / 多人视频通讯常用架构 Mesh / MCU / SFU
  9. 启明云端分享|ESP32-C3有望三月中旬量产出货,ESP32-C3-MINI-1模块技术规格书分享
  10. eclipse开发android的好处,从Eclipse切换到IntelliJ IDEA for Android开发的好处