Phoenix介紹:
針對hbase開發的第三方插件,目前已貢獻給Apache,頂級項目
Phoenix是構建在HBase上的一個SQL層
可以使用類似於操作mysql的標准sql語句,作為hbase客戶端JDBC的驅動對hbase中的數據進行低延遲的訪問
內部實現為將sql查詢語句編譯成hbase內部的一系列scan操做
因為hive關聯hbase查詢底層為MapReduce,為Phoenix底層查詢為hbase的API,故查詢速度比hive集成快
hbase-》hive-》hql-》MapReduce查詢等-》速度慢
hbase-》Phoenix-》sql-》hbase Scan查詢(JDBC結果集)-》速度快
官網下載 http://phoenix.apache.org/download.html
1、上傳解壓
$ tar zxf apache-phoenix-4.14.0-cdh5.14.2-bin.tar.gz
$ mv apache-phoenix-4.14.0-cdh5.14.2-bin phoenix-4.14.0-cdh5.14.2 (可不修改)
2、將phoenix安裝目錄下的phoenix-4.14.0-cdh5.14.2-server.jar拷貝到hbase的lib目錄下
$ cp phoenix-4.14.0-cdh5.14.2/phoenix-4.14.0-cdh5.14.2-server.jar hbase-1.2.0-cdh5.14.2/lib/
3、將phoenix安裝目錄下的phoenix-core-4.14.0-cdh5.14.2.jar 拷貝到hbase的lib目錄下(如果是phoenix 3.x版本的安裝除了phoenix-[version]-server.jar需要復制外,同時phoenix-core-[version].jar 也需要復制,但是我們安裝的是phoenix 4.x所以phoenix-core-[version].jar 的jar包就不需要復制了)
$ cp phoenix-4.14.0-cdh5.14.2/phoenix-core-4.14.0-cdh5.14.2.jar hbase-1.2.0-cdh5.14.2/lib/
4、將hbase/conf目錄下hbase-site文件覆蓋放入phoenix的bin目錄下
$ cp hbase-1.2.0-cdh5.14.2/conf/hbase-site.xml phoenix-4.14.0-cdh5.14.2/bin/
5、重啟hbase進程
6、啟動phoenix客戶端交互命令
$ bin/sqlline.py zkip:2181
第一次啟動時間相對較長要進行初始化操作創建一些表
如果報argparse錯誤:$ sudo yum -y install python-argparse
集成測試:
-》show databases 或 show tables 不支持的,並不與mysql中操作完全一樣
-》!help 查看內置命令
-》!tables 查看hbase中與phoenix建立好映射的表
-》通過phoenix客戶端創建表
create table user_ph(
id varchar primary key,
name varchar,
password varchar
);
phoenix查看表有沒有:
-》hbase shell中通過list查看
注意:phoenix中的表名和字段名不加雙引號則默認都為大寫
加上雙引號則區分大小寫
phoenix和RDBMS中一樣,有數據類型
-》hbase shell中通過 desc 'USER_PH'
表列簇默認名稱是0,NAME => '0'
-》重新創建,並指定列簇:列
drop table user_ph;
create table "user_ph"(
"id" varchar primary key,
"info"."name" varchar,
"info"."password" varchar
);
-》添加數據:
updata+insert結合命令--》upsert,插入數據時表名和列名因為都是小寫的所以要加雙引號, 值為字符串時只能用單引號引起否則報錯,phoenix中創建表時的主鍵列會默認為hbase表中的rowkey
upsert into "user_ph"("id","info"."name","info"."password") values('001','admin','admin');
upsert into "user_ph"("id","info"."name","info"."password") values('002','admin','admin');
upsert into "user_ph"("id","info"."name","info"."password") values('003','admin','admin');
-》查詢數據:
select * from "user_ph";
scan "user_ph"
-》刪除數據:
delete from "user_ph" where "id"='002';
-》在phoenix中的client界面中進行的crud(增刪改查)操作與RDBMS的操作大都相同
-》退出phonix客戶端命令行
!quit
