java实现Hbase中的查询(一)Filter方式
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、代码:
- package org.myhbase;
- import java.io.IOException;
- import java.util.ArrayList;
- import java.util.List;
- import org.apache.hadoop.conf.Configuration;
- import org.apache.hadoop.hbase.HBaseConfiguration;
- import org.apache.hadoop.hbase.KeyValue;
- import org.apache.hadoop.hbase.client.Get;
- import org.apache.hadoop.hbase.client.HTable;
- import org.apache.hadoop.hbase.client.Result;
- import org.apache.hadoop.hbase.client.ResultScanner;
- import org.apache.hadoop.hbase.client.Scan;
- import org.apache.hadoop.hbase.filter.FilterList;
- import org.apache.hadoop.hbase.filter.SingleColumnValueFilter;
- import org.apache.hadoop.hbase.filter.CompareFilter.CompareOp;
- import org.apache.hadoop.hbase.io.Cell;
- import org.apache.hadoop.hbase.util.Bytes;
- public class HBaseBasic03 {
- private static HBaseConfiguration hbaseConfig=null;
- static{
- Configuration config=new Configuration();
- config.set("hbase.zookeeper.quorum","192.168.10.149,192.168.10.44,192.168.10.49");
- config.set("hbase.zookeeper.property.clientPort", "2181");
- hbaseConfig=new HBaseConfiguration(config);
- }
- /**
- * get方式,通过rowKey查询
- * @param tablename
- * @param rowKey
- * @throws IOException
- */
- public static void selectByRowKey(String tablename,String rowKey) throws IOException{
- HTable table=new HTable(hbaseConfig,tablename);
- Get g = new Get(Bytes.toBytes(rowKey));
- Result r=table.get(g);
- for(KeyValue kv:r.raw()){
- System.out.println("column: "+new String(kv.getColumn()));
- System.out.println("value: "+new String(kv.getValue()));
- }
- }
- /**
- * get方式,通过rowKey、column查询
- * @param tablename
- * @param rowKey
- * @param column
- * @throws IOException
- */
- public static void selectByRowKeyColumn(String tablename,String rowKey,String column) throws IOException{
- HTable table=new HTable(hbaseConfig,tablename);
- Get g = new Get(Bytes.toBytes(rowKey));
- g.addColumn(Bytes.toBytes(column));
- Result r=table.get(g);
- for(KeyValue kv:r.raw()){
- System.out.println("column: "+new String(kv.getColumn()));
- System.out.println("value: "+new String(kv.getValue()));
- }
- }
- public static void selectByFilter(String tablename,List<String> arr) throws IOException{
- HTable table=new HTable(hbaseConfig,tablename);
- FilterList filterList = new FilterList();
- Scan s1 = new Scan();
- for(String v:arr){ // 各个条件之间是“与”的关系
- String [] s=v.split(",");
- filterList.addFilter(new SingleColumnValueFilter(Bytes.toBytes(s[0]),
- Bytes.toBytes(s[1]),
- CompareOp.EQUAL,Bytes.toBytes(s[2])
- )
- );
- // 添加下面这一行后,则只返回指定的cell,同一行中的其他cell不返回
- // s1.addColumn(Bytes.toBytes(s[0]), Bytes.toBytes(s[1]));
- }
- s1.setFilter(filterList);
- ResultScanner ResultScannerFilterList = table.getScanner(s1);
- for(Result rr=ResultScannerFilterList.next();rr!=null;rr=ResultScannerFilterList.next()){
- for(KeyValue kv:rr.list()){
- System.out.println("row : "+new String(kv.getRow()));
- System.out.println("column : "+new String(kv.getColumn()));
- System.out.println("value : "+new String(kv.getValue()));
- }
- }
- }
- public static void main(String [] args) throws IOException{
- // 按rowkey查询,查询Tom行的所有cell
- HBaseBasic03.selectByRowKey("scores","Tom");
- // 按rokey 和 column 来查询,查询Tom行course列族的所有列值
- HBaseBasic03.selectByRowKeyColumn("scores","Tom","course");
- // Filter多条件查询,条件:查询 course列族中art列值为97 ,且 course列族中math列值为100的行
- List<String> arr=new ArrayList<String>();
- arr.add("course,art,97");
- arr.add("course,math,100");
- HBaseBasic03.selectByFilter("scores",arr);
- }
- }
转载于:https://www.cnblogs.com/end/archive/2012/08/23/2652455.html
java实现Hbase中的查询(一)Filter方式相关推荐
- 技巧 | Java 8 Stream 中异常处理的4种方式
Stream API 和 lambda 是 Java8以来对Java的重大改进.从那时起,我们可以使用更具有功能性的语法风格的代码.但是有个问题就是,我们使用了 lambda 表达式,那 lambda ...
- JAVA——TCP连接中Socket的正确关闭方式
基本概念 TCP协议:Transmission Control Protocol 传输控制协议TCP是一种面向连接(连接导向)的.可靠的.基于字节流的运输层(Transport layer)通信协议, ...
- jetty java 实例_java 在Jetty9中使用HttpSessionListener和Filter实例详解
这篇文章主要介绍了java 在Jetty9中使用HttpSessionListener和Filter的相关资料,需要的朋友可以参考下 java 在Jetty9中使用HttpSessionListene ...
- hbase 按时刻查询_HBase读写优化
一个系统上线之后,开发和调优将一直贯穿系统的生命周期中,HBase也不列外.这里学习下HBase的调优.Hbase查询优化 作为NoSQL数据库,增删改查是其最基本的功能,其中查询是最常用的一项.设置 ...
- java提取字符串中数字
java的util工具类让我们很方便的提取字符串中的数据,提取金额,提取数据,提取主要信息等都有很大帮助,java获取字符中的信息有如下方式: Pattern pattern = Pattern.co ...
- java actioncontext_Struts2 ActionContext 中的数据详解
ActionContext ActionContext是Action的上下文,Struts2自动在其中保存了一些在Action执行过程中所需的对象,比如session, parameters, loc ...
- Java连接HBASE数据库,创建一个表,删除一张表,修改表,输出插入,修改,数据删除,数据获取,显示表信息,过滤查询,分页查询,地理hash
准备工作 1.创建Java的Maven项目 创建好的目录结构如下: 另外注意junit的版本,最好不要太高,最开始笔者使用的junit4.12的,发现运行的时候会报错.最后把Junit的版本改成4.7 ...
- Elasticsearch对Hbase中的数据建索引实现海量数据快速查询
文章目录 一.前言 二.将项目导入Myeclipse中 方法1: 方法2: 三.准备工作 3.1 运行这个项目你得安装有hadoop和hbase集群 3.2 安装Elasticsearch集群 3.3 ...
- 实战:在Java Web项目中使用HBase
在此之前我们使用MySQL作为数据源,但发现这数据增长速度太快,并且由于种种原因,因此必须使用HBase,所以我们要把Mysql表里面的数据迁移到HBase中,在这里我就不讲解.不争论为什么要使用HB ...
最新文章
- 开源Vue表格组件,表格插件源码
- 与其他CA合作签发证书 谷歌赛门铁克之争接近尾声
- 利用Canny边缘检测算子进行边缘检测的原理及OpenCV代码实现
- 为什么用lazy启动eclipse的时候,插件activator的start自动被调用
- 架构师成长系列 | 云原生时代的 DevOps 之道
- java多线程总结五:线程池的原理及实现
- LeetCode 869. 重新排序得到 2 的幂(排序 全排列)
- CompletableFuture详解~设置任务结果
- 第n小的质数(信息学奥赛一本通-T1099)
- 除了速度与激情 领克01带给我另一种有关生活方式的想象
- LVS--DR模型介绍及实现
- VBA函数 find
- Quartz CronTrigger最完整触发时间配置说明
- 文档处理 - 复杂Excel文档
- 【大厂面试必备系列】滑动窗口协议
- 海康威视摄像头连接(.net)
- 【安全知识分享】重磅|消防控制室培训.ppt(附下载)
- 软件测试人员提升测试技能的10个妙招分享
- java程序员月薪一万很难?(要到什么程度)
- SpringBoot 默认数据库连接池 HikariCP
热门文章
- Python3赋值运算符
- Jackson使用示例:将Java对象转换成Map
- JVM 调优实战--可视化GC日志分析工具GC Easy使用教程
- android 发送重启广播,Android实现关机重启的方法分享
- 从ucOS谈,为什么需要操作系统?
- c语言菜单程序循环结构举例,C语言程序设计课件 第4章 循环结构.ppt
- probable oracle net,ORA-28547: connection to server failed, probable Oracle Net admin error
- WebRTC / Jitsi / 多人视频通讯常用架构 Mesh / MCU / SFU
- 启明云端分享|ESP32-C3有望三月中旬量产出货,ESP32-C3-MINI-1模块技术规格书分享
- eclipse开发android的好处,从Eclipse切换到IntelliJ IDEA for Android开发的好处