一:问题由来

1.举例

  有A列与B列,分别是年龄与姓名。

  如果想通过年龄查询姓名。

  正常的检索是通过rowkey进行检索。

    根据年龄查询rowkey,然后根据rowkey进行查找姓名。

    这样的效率不高,因为要两次scan。

2.建议有一张索引表。

二:HBase的二级索引

1.讲解

  rowkey是uid+ts
    11111_20161126111111:

    这个rowkey方便查询某一uid的某一个时间段内的数据

  问题:
    查询某一时间段内所有用户的数据:按照时间

  索引表

   rowkey:ts+uid 20161126111111—111111

   其他列:info:uid

   值是uid+ts,因为这个是原表的rowkey。

  检索流程:

    从索引表中根据时间段来查询源表rowkey
    根据rowkey来查询源表

2.还有的问题

  如何保持索引表与原表的同步问题。

  好的方式是:编写协处理器,将客户端实现的逻辑代码放到服务端。

  同时,可以使用其他的框架,主要有solr,phoenix。elassearch。

3.协处理器

  observer处理器:观察者,类似于触发器

  endpoint类:终端类,类似于储存过程。

4.hbase自带的协处理器

  这个在hbase:meta中

  可以通过desc 'hbase:meta'进行查看

  是coprocessor$1。

三:phoenix的安装

1.上传源码包

  因为对应的hbase0.98.6没有对应的phoenix,所以需要自己进行编译。

  

2.解压到modules文件夹下

  tar -zxvf phoenix-4.2.2-src.tar.gz -C /etc/opt/modules/

3.修改pom.xml文件

  有一个问题,将所有的hadoop-two.version 变量都换成2.5.0

  <hbase.version>0.98.6-hadoop2</hbase.version>
  <hadoop-two.version>2.5.0</hadoop-two.version>

  

4.进入主目录

5.编译

  mvn clean package -DskipTests

  ----------------------------------------------------(以下需要重新编译,重新做)------------------------------------------------------------

6.查找编译好的包

  Phoenix_home/Phoenix-assembly/target/phoenix-4.2.2.tar.gz

7.安装phoenix

  启动的时候,后面跟的是zookeeper地址。

8.phoenix映射原有的表

  执行的语句,在phoenix中。

  hbase对于大小写敏感,然后需要将phoenix中的语句进行双引号引起来。

  

9.看效果

  可以在phoenix中查询映射的表。

  select * from "s1";

  将会发现,这里的数据与hbase中的数据相同。

085 HBase的二级索引,以及phoenix的安装(需再做一次)的更多相关文章

  1. HBase的二级索引,以及phoenix的安装(需再做一次)

    一:HBase的二级索引 1.讲解 uid+ts 11111_20161126111111:查询某一uid的某一个时间段内的数据 查询某一时间段内所有用户的数据:按照时间 索引表 rowkey:ts+ ...

  2. HBase建立二级索引的一些解决方式

    HBase的一级索引就是rowkey,我们仅仅能通过rowkey进行检索. 假设我们相对hbase里面列族的列列进行一些组合查询.就须要採用HBase的二级索引方案来进行多条件的查询. 常见的二级索引 ...

  3. HBase之八--(2):HBase二级索引之Phoenix

    1. 介绍 Phoenix 是 Salesforce.com 开源的一个 Java 中间件,可以让开发者在Apache HBase 上执行 SQL 查询.Phoenix完全使用Java编写,代码位于 ...

  4. 利用Phoenix为HBase创建二级索引

    为什么需要Secondary Index 对于Hbase而言,如果想精确地定位到某行记录,唯一的办法是通过rowkey来查询.如果不通过rowkey来查找数据,就必须逐行地比较每一列的值,即全表扫瞄. ...

  5. hbase构建二级索引解决方案

    关注公众号:大数据技术派,回复"资料",领取1024G资料. 1 为什么需要二级索引 HBase的一级索引就是rowkey,我们仅仅能通过rowkey进行检索.假设我们相对Hbas ...

  6. 基于Solr实现HBase的二级索引

    文章来源:http://www.open-open.com/lib/view/open1421501717312.html 实现目的: 由于hbase基于行健有序存储,在查询时使用行健十分高效,然后想 ...

  7. hbase coprocessor 二级索引

    Coprocessor方式二级索引 1. Coprocessor提供了一种机制可以让开发者直接在RegionServer上运行自定义代码来管理数据.通常我们使用get或者scan来从Hbase中获取数 ...

  8. [How to] MapReduce on HBase ----- 简单二级索引的实现

    1.简介 MapReduce计算框架是二代hadoop的YARN一部分,能够提供大数据量的平行批处理.MR只提供了基本的计算方法,之所以能够使用在不用的数据格式上包括HBase表上是因为特定格式上的数 ...

  9. HBase的二级索引

    使用HBase存储中国好声音数据的案例,业务描述如下: 为了能高效的查询到我们需要的数据,我们在RowKey的设计上下了不少功夫,因为过滤RowKey或者根据RowKey查询数据的效率是最高的,我们的 ...

随机推荐

  1. C++:error 1189(转)

    在VS 2013中编译程序时出现错误: 错误提示1: error C1189: #error : Building MFC application with /MD[d] (CRT dll versi ...

  2. Java SE之For增强与Iterator遍历器提取数据(附Map.Entry)

    增强for循环: 1.操作数组 2.操作List集合 3.操作Map集合    1.map.values()法    2.map.keySet()法  [传统方法]    3.Map.Entry法   ...

  3. IO流总结笔记二

    ​ Reader |--InputStreamReader |--FileReader:专门用于处理文件的字符读取流对象 Writer |--OutputStreamWriter |--FileWri ...

  4. 一个极好的JavaScript学习网址

    JavaScript学习网址:https://javascript.info/ 网址界面如下,内容和排版都非常不错,内容也比较新,不像一些教程已经是好几年前的了.把这个教程浏览一遍,能够解答很多看代码 ...

  5. 使用flask_socketio实现服务端向客户端定时推送

    websocket连接是客户端与服务器之间永久的双向通信通道,直到某方断开连接. 双向通道意味着在连接时,服务端随时可以发送消息给客户端,反之亦然,这在一些需要即时通讯的场景比如多人聊天室非常重要. ...

  6. tomcat顺序图摘要

    1.Connector 处理一次请求顺序图 2.Context 和 wrapper 的处理请求时序图 3. 参考: https://www.ibm.com/developerworks/cn/java ...

  7. MySQL内连接、外连接、交叉连接

    外连接: 左连接:left join 或 left outer join 以左边的表为基准,如果左表有数据,而右表没有数据,左表的数据正常显示,右表数据显示为空. 创建user表,用于记录用户 use ...

  8. 【BARTS计划】【Tips_Week1】20190331更新

    BARTS计划 · Review :每周学习至少一个技术技巧. 一.快捷键 1. 快速批量注释代码的方法:选中需要注释的代码,按 ctrl+/ 二.重要命令行命令 1. 新增文件:git add a. ...

  9. openwrt 添加 802.1x客户端njit

    1.修改feed的配置文件 feeds.conf.default 添加下面两句: src-svn njit https://github.com/liuqun/openwrt-clients/trun ...

  10. centos6.8系统安装 Hadoop 2.7.3伪分布式集群

    安装 Hadoop 2.7.3 配置ssh免密码登陆 cd ~/.ssh                       # 若没有该目录,请先执行一次ssh localhost ssh-keygen - ...