Phoenix介绍
phoenix,中文译为“凤凰”,很美的名字。Phoenix是由saleforce.com开源的一个项目,后又捐给了Apache基金会。它相当于一个Java中间件,提供jdbc连接,操作hbase数据表。Phoenix是一个HBase的开源SQL引擎。你可以使用标准的JDBC API代替HBase客户端API来创建表,插入数据,查询HBase数据。
支持SQL的还有Hive和Impala。但是Hive和Impala还可以查询文本文件,Phoenix只能查Hbase。
Phoenix是构建在HBase之上的SQL引擎。其查询效率相同或高于Hbase原生查询性能,同时提高了开发效率,降低学习成本。除此之外,Phoenix还做了一些增强功能来更多地优化性能,例如二级索引、跳过扫描过滤器优化IN,LIKE,OR查询、优化主键。
Phoenix的安装部署
1 、提前安装好ZK集群、hadoop集群、Hbase集群
2、从对应的地址下载:http://mirrors.cnnic.cn/apache/phoenix/
这里我们使用的是:apache-phoenix-4.14.0- cdh5.14.2-bin.tar.gz
3、上传、解压
将对应的安装包上传到对应的Hbase集群其中一个服务器的/export/softwares目录下
解压:tar zxvf apache-phoenix-4.14.0-cdh5.14.2- bin.tar.gz -C /export/servers/
重命名:mv apache-phoenix-4.14.0-cdh5.14.2-bin/ phoenix
4、配置
(1) 将phoenix目录下的phoenix-4.14.0-cdh5.14.2-server.jar拷贝到各个 hbase的lib目录下。
在hbase 配置值文件hbase-site.xml文件中添加配置
<property>
<name>hbase.regionserver.wal.codec</name>
<value>org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec</value>
</property>
<property>
<name>zookeeper.znode.parent</name>
<value>/hbase</value>
</property>
同步至所有hbase节点后,将hbase-site.xml拷贝到phoenix/bin目录下
(2)重启hbase集群,使Phoenix的jar包生效。
5、验证是否成功
在phoenix/bin下输入命令:
端口可以省略
[root@node01 bin]# ./sqlline.py node01:2181
输入!tables 查看都有哪些表。SYSTEM为Phoenix系统表,系统表中维护了用户表的元数据信息。
退出Phoenix。输入!quit 或!q
Phoenix使用
Phoenix可以有4种方式调用:
批处理方式
命令行方式
GUI方式
JDBC调用方式
(1)批处理方式
A: 创建user_phoenix.sql文件
内容如下
CREATE TABLE IF NOT EXISTS user_phoenix (
state CHAR(2) NOT NULL,
city VARCHAR NOT NULL,
population BIGINT
CONSTRAINT my_pk PRIMARY KEY (state, city)
);
B: 创建user_phoenix.csv数据文件
NY,New York,8143197
CA,Los Angeles,3844829
IL,Chicago,2842518
TX,Houston,2016582
PA,Philadelphia,1463281
AZ,Phoenix,1461575
TX,San Antonio,1256509
CA,San Diego,1255540
TX,Dallas,1213825
CA,San Jose,912332
C: 创建user_phoenix_query.sql文件
内容为:
SELECT state as "State",count(city) as "City Count",sum(population) as "Population Sum" FROM user_phoenix GROUP BY state ORDER BY sum(population) DESC;
D: 执行
python /export/servers/phoenix-4.14.0-cdh5.14.2/bin/psql.py node01:2181 user_phoenix.sql user_phoenix.csv user_phoenix_query.sql
这条命令同时做了三件事:创建表、插入数据、查询结果
用Hbase shell 看下会发现多出来一个 USER_PHOENIX 表,用scan 命令查看一下这个表的数据
结论:
之前定义的Primary key 为state,city, 于是Phoenix就把输入的state,city的值拼起来成为rowkey
其他的字段还是按照列名去保存,默认的列族为0
还有一个0:_0这个列是没有值的,这个是Phoenix处于性 能方面考虑增加的一个列,不用管这个列
(2) 命令

Apache Phoenix是一个开源的SQL引擎,用于高效地操作HBase数据表,提供JDBC接口。相比HBase原生API,Phoenix提升了查询性能并简化了开发流程。支持批处理、命令行、GUI和JDBC等多种调用方式,包括INSERT/UPDATE操作和二级索引等高级功能。
安装部署及介绍&spm=1001.2101.3001.5002&articleId=103867676&d=1&t=3&u=3510dd09cdb34489969acd7b11159055)
1716

被折叠的 条评论
为什么被折叠?



