Phoenix是建立在HBase数据存储之上,可以通过jdbc的方式访问HBase,旨在通过sql可以更快的访问HBase的数据。
关于Phoenix的性能
因为的HBase版本是1.2,所以下载对应的Phoenix版本的包
wget http://apache.fayea.com/phoenix/apache-phoenix-4.14.0-HBase-1.2/bin/apache-phoenix-4.14.0-HBase-1.2-bin.tar.gz
解压安装包
tar -zxvf apache-phoenix-4.14.0-HBase-1.2-bin.tar.gz
重命名
mv apache-phoenix-4.14.0-HBase-1.2-bin phoenix
进入phoenix目录,将目录下的phoenix-4.14.0-HBase-1.2-server.jar
复制到hbase的安装目录下的lib目录(如果是集群,需要复制到每台机器)
如:
cp phoenix/phoenix-4.14.0-HBase-1.2-server.jar hbase/1.2.6.1/libexec/lib/
如果HBase已启动,需要重新启动。如果没启动HBase,直接启动就好。
启动Phoenix
# 进入phoenix下的bin目录
cd phoenix/bin
# 用python2.x启动
python2 sqlline.py
启动如图:
# 显示表
> !tables
# 查看表信息
> !describe tables_name
# 退出命令行
> !quit
# 删除表
> DROP TABLE tables_name;
Phoenix的sql基本上和mysql的语句是一样的,下面使用一个二级索引的示例演示下。
创建user表,并插入数据
# 创建一个user表
create table user(id varchar primary key,name varchar,age varchar,phone varchar,email varchar);
# 插入5条数据,使用upsert插入
upsert into user values('1001','caocao','26','13800000000','[email protected]');
upsert into user values('1002','liubei','24','13800000001','[email protected]');
upsert into user values('1003','guanyu','23','13800000002','[email protected]');
upsert into user values('1004','zhangfei','22','13800000003','[email protected]');
upsert into user values('1005','sunquan','20','13800000004','[email protected]');
# 查询user表
select * from user;
创建phone表,并插入数据
# 创建phone表
create table phone(phone varchar primary key, yys varchar, address varchar);
# 插入5条数据
upsert into phone values('13800000000','移动','河南');
upsert into phone values('13800000001','电信','四川');
upsert into phone values('13800000002','电信','四川');
upsert into phone values('13800000003','电信','四川');
upsert into phone values('13800000004','联通','江苏');
# 查询数据
select * from phone;
user表和phone表join
select u.*,p.* from user u left join phone p on u.phone = p.phone;