一、HBase与phoenix原因
1.phoenix:可以类似于mysql,作为客户端JDBC的驱动对hbase中的数据进行低延迟的访问
2.内部将sql查询语句编译成hbase内部的一系列复杂scan操做
二、准备
1.phoenix
(1)下载:官网http://phoenix.apache.org/download.html
(2)自己编译(推荐,更加保证兼容性)
参考之前博客:https://blog.csdn.net/u010886217/article/details/84701152
2.hbase采用cdh5.7.0版本
三、安装和配置步骤
1.解压
tar -zxvf phoenix-4.9.0-cdh5.7.0.tar.gz -C /opt/modules/
2.phoenix与hbase集成
(1)将phoenix-4.9.0-cdh5.7.0-client.jar 拷贝到hbase的lib目录下
cp /opt/modules/phoenix-4.9.0-cdh5.7.0/phoenix-4.9.0-cdh5.7.0-client.jar /opt/modules/hbase-1.2.0-cdh5.7.0/lib/
(2)将lib目录下的phoenix-core-4.9.0-cdh5.7.0.jar拷贝到hbase的lib目录下
cp /opt/modules/phoenix-4.9.0-cdh5.7.0/lib/phoenix-core-4.9.0-cdh5.7.0.jar /opt/modules/hbase-1.2.0-cdh5.7.0/lib/
(3)将hbase/conf目录下hbase-site文件放到phoenix的bin目录下
cp /opt/modules/hbase-1.2.0-cdh5.7.0/conf/hbase-site.xml /opt/modules/phoenix-4.9.0-cdh5.7.0/bin/
(4)重启zk和hbase服务
bin/hbase-daemon.sh start master
bin/hbase-daemon.sh start regionserver
四、测试
1.开启phoenix,指定zk的地址作为hbase的访问入口
bin/sqlline.py hadoop:2181
2.基本命令
(1)查看表
0: jdbc:phoenix:hadoop:2181> !tables
+------------+--------------+-------------+---------------+----------+------------+---------+
| TABLE_CAT | TABLE_SCHEM | TABLE_NAME | TABLE_TYPE | REMARKS | TYPE_NAME | SELF_RE |
+------------+--------------+-------------+---------------+----------+------------+---------+
| | SYSTEM | CATALOG | SYSTEM TABLE | | | |
| | SYSTEM | FUNCTION | SYSTEM TABLE | | | |
| | SYSTEM | SEQUENCE | SYSTEM TABLE | | | |
| | SYSTEM | STATS | SYSTEM TABLE | | | |
+------------+--------------+-------------+---------------+----------+------------+---------+
(2)在phoenix中创建表
create table user(
id varchar primary key,
name varchar,
password varchar
);
(3)创建表,指定列簇与列
create table user(
id varchar primary key,
info.name varchar,
info.password varchar
);
(4)添加数据:upsert
upsert into user(id,name,password) values('001','admin','admin');
upsert into user(id,name,password) values('002','admin','admin');
hbase中就会有相应的数据和表
hbase(main):002:0> scan 'USER'
ROW COLUMN+CELL
001 column=INFO:NAME, timestamp=1543661442858, value=admin
001 column=INFO:PASSWORD, timestamp=1543661442858, value=admin
001 column=INFO:_0, timestamp=1543661442858, value=x
002 column=INFO:NAME, timestamp=1543661447932, value=admin
002 column=INFO:PASSWORD, timestamp=1543661447932, value=admin
002 column=INFO:_0, timestamp=1543661447932, value=x
2 row(s) in 0.1140 seconds
(5)查询数据
select * from user;
(6)删除数据
delete from user where id='002';
(7)hbase与phoenix表与表之间进行关联
将hbase中的表映射到phoenix,hbase中有stu_info
create table "stu_info"(
rowkey varchar primary key,
"info"."name" varchar,
"info"."age" varchar,
"info"."sex" varchar,
"degree"."xueli" varchar,
"work"."job" varchar
);
phoenix的结果
0: jdbc:phoenix:hadoop:2181> select * from "stu_info";
+---------+-----------+------+---------+-----------+----------+
| ROWKEY | name | age | sex | xueli | job |
+---------+-----------+------+---------+-----------+----------+
| 10001 | tom | 18 | male | benke | bigdata |
| 10002 | jack | 22 | female | gaozhong | |
| 10003 | leo | 22 | | | |
| 10004 | peter | 18 | | | |
| 10005 | jim | 19 | | | |
| 10006 | zhangsan | 20 | | | |
| 10011 | ngsan | 12 | male | | |
| 10012 | lisi | 13 | female | | |
| 10013 | wangwu | 14 | male | | |
| 10014 | zhaoliu | 15 | female | | |
| 10015 | xieqi | 16 | female | | |
+---------+-----------+------+---------+-----------+----------+