1. 程式人生 > >使用phoenix連線hbase

使用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)