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

文章目录

    • 前言
    • 准备HBase
    • 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中已创建的表_第1张图片

在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中已创建的表_第2张图片
我这边刚刚创建这个表,里面的数据比较少,如果你数据量很大的话可千万不能这么来,可以使用下面的命令

scan 'USER', {LIMIT=>10}

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

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

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

bin/sqlline.py cm01,cm02,cm03

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

创建视图

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中已创建的表_第4张图片

再看下表结构

!describe user

Phoenix创建视图映射Hbase中已创建的表_第5张图片

OK,现在可以查下数据了

select * from user;

Phoenix创建视图映射Hbase中已创建的表_第6张图片
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中已创建的表_第7张图片
是实时更新的

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

你可能感兴趣的:(Phoenix,创建视图,HBase,映射表,大数据)