085 HBase的二级索引,以及phoenix的安装(需再做一次)
一:问题由来
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的安装(需再做一次)的更多相关文章
- HBase的二级索引,以及phoenix的安装(需再做一次)
一:HBase的二级索引 1.讲解 uid+ts 11111_20161126111111:查询某一uid的某一个时间段内的数据 查询某一时间段内所有用户的数据:按照时间 索引表 rowkey:ts+ ...
- HBase建立二级索引的一些解决方式
HBase的一级索引就是rowkey,我们仅仅能通过rowkey进行检索. 假设我们相对hbase里面列族的列列进行一些组合查询.就须要採用HBase的二级索引方案来进行多条件的查询. 常见的二级索引 ...
- HBase之八--(2):HBase二级索引之Phoenix
1. 介绍 Phoenix 是 Salesforce.com 开源的一个 Java 中间件,可以让开发者在Apache HBase 上执行 SQL 查询.Phoenix完全使用Java编写,代码位于 ...
- 利用Phoenix为HBase创建二级索引
为什么需要Secondary Index 对于Hbase而言,如果想精确地定位到某行记录,唯一的办法是通过rowkey来查询.如果不通过rowkey来查找数据,就必须逐行地比较每一列的值,即全表扫瞄. ...
- hbase构建二级索引解决方案
关注公众号:大数据技术派,回复"资料",领取1024G资料. 1 为什么需要二级索引 HBase的一级索引就是rowkey,我们仅仅能通过rowkey进行检索.假设我们相对Hbas ...
- 基于Solr实现HBase的二级索引
文章来源:http://www.open-open.com/lib/view/open1421501717312.html 实现目的: 由于hbase基于行健有序存储,在查询时使用行健十分高效,然后想 ...
- hbase coprocessor 二级索引
Coprocessor方式二级索引 1. Coprocessor提供了一种机制可以让开发者直接在RegionServer上运行自定义代码来管理数据.通常我们使用get或者scan来从Hbase中获取数 ...
- [How to] MapReduce on HBase ----- 简单二级索引的实现
1.简介 MapReduce计算框架是二代hadoop的YARN一部分,能够提供大数据量的平行批处理.MR只提供了基本的计算方法,之所以能够使用在不用的数据格式上包括HBase表上是因为特定格式上的数 ...
- HBase的二级索引
使用HBase存储中国好声音数据的案例,业务描述如下: 为了能高效的查询到我们需要的数据,我们在RowKey的设计上下了不少功夫,因为过滤RowKey或者根据RowKey查询数据的效率是最高的,我们的 ...
随机推荐
- luogu 1030 求先序遍历
此题给出中序遍历和后序遍历后的序列,乍一看确乎想不出法子解决,毕竟是逆向思维: 但是后序遍历的特殊性质 son1,son2,x 使得后序的末尾便是根节点,再由中序天然的递归性质便可递归输出,用下fin ...
- “微信小程序商城构建全栈应用”开发小记
注意事项: 1.application\api\extra下的wx.php记得填写小程序的app_id.app_secret: 2.API测试小工具需要APPID:
- Bootstrap2.x与Bootstrap3.x的区别
做项目时,有时也会参考别的案例的优秀之处.在用Bootstrap的时候,发现很多项目代码都有区别,在<div>布局class上,有用.span*,有用.col-md-*,实际上是Boots ...
- 【逆向工具】IDA使用3-全局变量、数组、结构体
全局变量 测试代码 全局变量既可以是某对象函数创建,也可以是在本程序任何地方创建.全局变量是可以被本程序所有对象或函数引用.下面这段代码中将int.float.char变量定义在main函数之外. / ...
- C语言函数调用栈(二)
5 函数调用约定 创建一个栈帧的最重要步骤是主调函数如何向栈中传递函数参数.主调函数必须精确存储这些参数,以便被调函数能够访问到它们.函数通过选择特定的调用约定,来表明其希望以特定方式接收参数.此外, ...
- mysql系列十二、mysql常用hint
对于经常使用oracle的朋友可能知道,oracle的hint功能种类很多,对于优化sql语句提供了很多方法.同样,在mysql里,也有类似的hint功能.下面介绍一些常用的. 强制索引 FORCE ...
- 『实践』Yalmip获取对偶函数乘子
『实践』Yalmip获取对偶函数乘子 一.sdpsetting设置 Yalmip网站给出的说明 savesolveroutput默认为0,需要设置为1才会保存输出结果. 下面是我模型的约束个数: 二. ...
- 004_i686和x86_64的区别
找回TCL隐藏分区(转载) 用Wubi安装 Ubuntu 出现(Initranfs)问题的解决方案 i686和x86_64的区别 2009-04-11 08:19:31| 分类: 电脑问题 | 标 ...
- S5PV210 PWM定时器
第一节 S5PV210的PWM定时器S5PV210共有5个32bit的PWM定时器,其中定时器0.1.2.3有PWM功能,定时器4没有输出引脚.PWM定时器使用PCLK_PSYS作为时钟源,相关知识可 ...
- js学习、备忘
字符串使用单引号’abc’.(双引号也行.推荐:html→双引号,js→单引号)===严格等于.!==严格不等于if(x) 当x为undefined.null和0的时候都为false:需注意当x为0 ...