使用phoenix连接hbase

hbase本身不支持SQL查询,为了实现这个功能,引入了phoenix,通过它可以实现hbase的sql查询。这里记录下如何配置并使用phoenix来操作hbase。

1. 下载地址

phoenix下载地址:http://apache.fayea.com/phoenix/
phoenix.jpg
注意:phoenix和hbase之前存在版本对应关系,我使用的hbase版本是1.1.3,所以我下载的phoenix版本是apache-phoenix-4.14.0-HBase-1.1-bin.tar.gz。

2. 配置phoenix

(1). 解压文件 tar -zxvf apache-phoenix-4.14.0-HBase-1.1-bin.tar.gz
(2). 拷贝phoenix-4.14.0-HBase-1.1-client.jarphoenix-core-4.14.0-HBase-1.1.jar 这两个文件到hbase的lib目录下。
注意:如果hbase是集群模式部署,需要拷贝这两个文件到每个hbase的lib目录下。
(3). 复制hbase-site.xml文件到phoenix的bin目录下 apache-phoenix-4.14.0-HBase-1.1-bin/bin
(4). 重启hbase服务(必须重启hbase服务,否则phoenix将不能正常启动)

sh stop-hbase.sh
sh start-hbase.sh

3. 启动phoenix

进入到phoenix的bin目录下,执行命令./sqlline.py host:port,其中host是主机名,port为zookeeper端口
phoenix-login.jpg
如上图所示,已进入phoenix的控制台。

4. 用法简介

(1). !tables命令可以查看有哪些表,注意:只能查询到通过phoenix创建的表,通过hbase创建的表无法看到
phoenix-sql01.jpg
(2). 创建视图,将hbase上的表映射到phoenix中

#首先在hbase上创建一个表student,包含一个列簇info
hbase(main):004:0> create "student","info"
0 row(s) in 2.6890 seconds

=> Hbase::Table - student

#向student表中插入一行数据
hbase(main):009:0> put "student","001","info:name","tom"
0 row(s) in 0.0250 seconds

hbase(main):010:0> put "student","001","info:age","23"
0 row(s) in 0.0090 seconds

#接下来,进入phoenix的控制台,创建student的视图
0: jdbc:phoenix:node3:2181> create view "student"(rid varchar primary key,"info"."name" varchar,"info"."age" varchar);

#查询
0: jdbc:phoenix:node3:2181> select * from "student";
+------+-------+------+
| RID  | name  | age  |
+------+-------+------+
| 001  | tom   | 23   |
+------+-------+------+
1 row selected (0.326 seconds)
posted @ 2018-10-19 20:10  redcoder54  阅读(2096)  评论(0编辑  收藏  举报