网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
source /etc/profile
### 2. 复制两个文件
cp $PHOENIX_HOME/phoenix-server-hbase-2.5-5.1.3.jar $HBASE_HOME/lib/
cp $HBASE_HOME/conf/hbase-site.xml $PHOENIX_HOME/bin/
### 3. 重启 HBase 集群
stop-hbase.sh
start-hbase.sh
### 4. 安装验证
#### (1)连接 HBase
连接,参数为 Zookeeper 节点
sqlline.py node1,node2,node3
列出表
!table
输出:
[root@vvml-yz-hbase-test~]#sqlline.py node1,node2,node3
Setting property: [incremental, false]
Setting property: [isolation, TRANSACTION_READ_COMMITTED]
issuing: !connect -p driver org.apache.phoenix.jdbc.PhoenixDriver -p user “none” -p password “none” “jdbc:phoenix:node1,node2,node3”
Connecting to jdbc:phoenix:node1,node2,node3
24/03/07 14:44:45 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable
24/03/07 14:44:45 WARN impl.MetricsConfig: Cannot locate configuration: tried hadoop-metrics2-phoenix.properties,hadoop-metrics2.properties
Connected to: Phoenix (version 5.1)
Driver: PhoenixEmbeddedDriver (version 5.1)
Autocommit status: true
Transaction isolation: TRANSACTION_READ_COMMITTED
sqlline version 1.9.0
0: jdbc:phoenix:node1,node2,node3> !table
±----------±------------±-----------±-------------±--------±----------±--------------------------±---------------±------------±+
| TABLE_CAT | TABLE_SCHEM | TABLE_NAME | TABLE_TYPE | REMARKS | TYPE_NAME | SELF_REFERENCING_COL_NAME | REF_GENERATION | INDEX_STATE | |
±----------±------------±-----------±-------------±--------±----------±--------------------------±---------------±------------±+
| | SYSTEM | CATALOG | SYSTEM TABLE | | | | | | |
| | SYSTEM | CHILD_LINK | SYSTEM TABLE | | | | | | |
| | SYSTEM | FUNCTION | SYSTEM TABLE | | | | | | |
| | SYSTEM | LOG | SYSTEM TABLE | | | | | | |
| | SYSTEM | MUTEX | SYSTEM TABLE | | | | | | |
| | SYSTEM | SEQUENCE | SYSTEM TABLE | | | | | | |
| | SYSTEM | STATS | SYSTEM TABLE | | | | | | |
| | SYSTEM | TASK | SYSTEM TABLE | | | | | | |
±----------±------------±-----------±-------------±--------±----------±--------------------------±---------------±------------±+
0: jdbc:phoenix:node1,node2,node3>
默认情况下,直接在 HBase 中创建的表,通过 Phoenix 是查看不到的。如[上一篇]( )在 hbase shell 中创建的 test 表,这里没有显示。如果要在 Phoenix 中操作直接在 HBase 中创建的表,则需要在 Phoenix 中进行表的映射。映射方式有两种:视图映射和表映射。
#### (2)视图映射
Phoenix 创建的视图是只读的,所以只能用来做查询,无法通过视图对源数据进行修改等操作。
0: jdbc:phoenix:node1,node2,node3> create view “test”(pk varchar primary key,“cf”.“a” varchar,“cf”.“b” varchar,“cf”.“c” varchar,“cf”.“d” varchar,“cf”.“e” varchar);
No rows affected (0.178 seconds)
0: jdbc:phoenix:node1,node2,node3> !table
±----------±------------±-----------±-------------±--------±----------±--------------------------±---------------±------------±+
| TABLE_CAT | TABLE_SCHEM | TABLE_NAME | TABLE_TYPE | REMARKS | TYPE_NAME | SELF_REFERENCING_COL_NAME | REF_GENERATION | INDEX_STATE | |
±----------±------------±-----------±-------------±--------±----------±--------------------------±---------------±------------±+
| | SYSTEM | CATALOG | SYSTEM TABLE | | | | | | |
| | SYSTEM | CHILD_LINK | SYSTEM TABLE | | | | | | |
| | SYSTEM | FUNCTION | SYSTEM TABLE | | | | | | |
| | SYSTEM | LOG | SYSTEM TABLE | | | | | | |
| | SYSTEM | MUTEX | SYSTEM TABLE | | | | | | |
| | SYSTEM | SEQUENCE | SYSTEM TABLE | | | | | | |
| | SYSTEM | STATS | SYSTEM TABLE | | | | | | |
| | SYSTEM | TASK | SYSTEM TABLE | | | | | | |
| | | test | VIEW | | | | | | |
±----------±------------±-----------±-------------±--------±----------±--------------------------±---------------±------------±+
0: jdbc:phoenix:node1,node2,node3> select * from “test”;
±-----±-------±-------±-------±-------±-------+
| PK | a | b | c | d | e |
±-----±-------±-------±-------±-------±-------+
| row1 | value1 | | | | |
| row2 | | value2 | | | |
| row3 | | | value3 | | |
| row4 | | | | value4 | |
| row5 | | | | | value5 |
±-----±-------±-------±-------±-------±-------+
5 rows selected (0.021 seconds)
0: jdbc:phoenix:node1,node2,node3>
HBase 严格区分大小写,创建视图时表名、列族、列名需要用双引号括起来。
#### (3)表映射
0: jdbc:phoenix:node1,node2,node3> drop view “test”;
No rows affected (0.011 seconds)
0: jdbc:phoenix:node1,node2,node3> create table “test”(pk varchar primary key,“cf”.“a” varchar,“cf”.“b” varchar,“cf”.“c” varchar,“cf”.“d” varchar,“cf”.“e” varchar) column_encoded_bytes=0;
5 rows affected (5.676 seconds)
0: jdbc:phoenix:node1,node2,node3> upsert into “test” values(‘a’,‘1’,‘2’,‘3’,‘4’,‘5’);
1 row affected (0.007 seconds)
0: jdbc:phoenix:node1,node2,node3> select * from “test”;
±-----±-------±-------±-------±-------±-------+
| PK | a | b | c | d | e |
±-----±-------±-------±-------±-------±-------+
| a | 1 | 2 | 3 | 4 | 5 |
| row1 | value1 | | | | |
| row2 | | value2 | | | |
| row3 | | | value3 | | |
| row4 | | | | value4 | |
| row5 | | | | | value5 |
±-----±-------±-------±-------±-------±-------+
6 rows selected (0.013 seconds)
0: jdbc:phoenix:node1,node2,node3> !quit
Closing: org.apache.phoenix.jdbc.PhoenixConnection
[root@vvml-yz-hbase-test~]#
表映射方式时,数据更新是对源表的操作,删除表也会删除 HBase 中的源表。如果只做查询,强烈建议使用视图方式映射,删除视图不影响 HBase 源数据。Phoenix 4.10 版本后,对列映射做了优化,采用一套新的机制,不再基于列名方式映射到 HBase。如果必须要表映射,则需要禁用列映射规则(column\_encoded\_bytes=0),但这会降低查询性能。
![img](https://img-blog.csdnimg.cn/img_convert/7c45decb7be71cee20977fdd69ce2b86.png)
![img](https://img-blog.csdnimg.cn/img_convert/1291e901e97d7ed7d06283dc93f6189f.png)
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**