Phoenix创建视图映射Hbase中已创建的表

前言

HBase版本:1.2.0-cdh5.10.2
Phoenix版本:phoenix-4.9
虽然HBase的RowKey已经进行了精心+巧妙的设计,
但是对HBase来说不是不够用,于是乎就用Phoenix为HBase创建二级索引来进一步提高查询需求

Phoenix创建视图映射Hbase中已创建的表的时候,各种难产,网上翻了好多资料都没有搞定,这里记录一下

准备HBase

登陆HBase Shell

hbase shell

Phoenix创建视图映射Hbase中已经存在的表01

在HBase里创建表,命名为USER:

# 创建表:
create 'USER', 'INFO'

再来点数据

put 'USER', 'bbbZZZ1004', 'INFO:NAME', 'WeiDong'
put 'USER', 'bbbZZZ1004', 'INFO:AGE', '27'
put 'USER', 'bbbZZZ1004', 'INFO:HOME', 'ZhouKou'
put 'USER', 'bbbZZZ1005', 'INFO:NAME', 'XiaoMeng'
put 'USER', 'bbbZZZ1005', 'INFO:AGE', '27'
put 'USER', 'bbbZZZ1005', 'INFO:HOME', 'YuLin'
put 'USER', 'bbbTTT1006', 'INFO:NAME', 'GuiPing'
put 'USER', 'bbbTTT1006', 'INFO:AGE', '39'
put 'USER', 'bbbTTT1006', 'INFO:HOME', 'ZhengZhou'

注意
这里HBase表名、列簇、列修饰符为什么全部都是大写的呢?
因为在Phoenix里写着方便啊,Phoenix里的表名要与HBase的表名保持一致
Phoenix不管你输入的是大写还是小写都默认把它转成大写的,如果要小写的话必须加上引号,
比如说如果HBase里表名是大写的
我们在Phoenix里写sql是这样的:select * from user
如果是小写的话就要加上引号了:select * from "user"

看下插入的数据:

scan 'USER'

Phoenix创建视图映射Hbase中已经存在的表02
我这边刚刚创建这个表,里面的数据比较少,如果你数据量很大的话可千万不能这么来,可以使用下面的命令

scan 'USER', {LIMIT=>10}

这样就限制最多看10条数据了

Phoenix创建视图映射HBase已创建的表

切换到Phoenix的根目录下
连接Phoenix

bin/sqlline.py cm01,cm02,cm03

cm01,cm02,cm03这是Zookeeper的主机名
主机名已经映射了IP地址了,如果你没有映射的话就用IP吧
另外,加不加2181的端口号都可以
Phoenix创建视图映射Hbase中已经存在的表03

创建视图

create view user (
    pk varchar primary key,
    info.name varchar,
    info.age  varchar,
    info.home varchar
) as select * from user;

一开始的时候一直没有加后面的as select * from user,一直创建不成功,后来无意之间把它加上就好了,看来Phoenix与传统的数据库还是有些不一样啊

查看是否创建成功

!tables

Phoenix创建视图映射Hbase中已经存在的表04

再看下表结构

!describe user

Phoenix创建视图映射Hbase中已经存在的表05

OK,现在可以查下数据了

select * from user;

Phoenix创建视图映射Hbase中已经存在的表06
OK,数据出来了,

最后咱再在HBase里插入点数据看看Phoenix的视图能否实时更新
在HBase里插点数据

put 'USER', 'cccTTT1007', 'INFO:NAME', 'YongFa'
put 'USER', 'cccTTT1007', 'INFO:AGE', '27'
put 'USER', 'cccTTT1007', 'INFO:HOME', 'LuYi'
put 'USER', 'cccTTT1008', 'INFO:NAME', 'LuiYa'
put 'USER', 'cccTTT1008', 'INFO:AGE', '27'
put 'USER', 'cccTTT1008', 'INFO:HOME', 'ZhengZhou'
put 'USER', 'cccSSS1009', 'INFO:NAME', 'KeMeng'
put 'USER', 'cccSSS1009', 'INFO:AGE', '27'
put 'USER', 'cccSSS1009', 'INFO:HOME', 'NanYang'

到Phoenix再查下

select * from user;

Phoenix创建视图映射Hbase中已经存在的表07
是实时更新的

至此完成,有用就点个赞吧

  • 8
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值