本文作者:林伟兵,叩丁狼高级讲师。原创文章,转载请注明出处。
1.Phoenix概述
Phoenix是一个开源的HBASE SQL层API。Phoeinx可以用标准的JDBC API替代HBASE client API来创建表,插入和查询查询HBASE中的数据。Phoenix作为应用层和HBASE之间的中间件,以下特性使它在大数据量的简单查询场景有着独有的优势:
- 支持二级索引.
- 编译SQL成为原生HBase的可并行执行的查询,并下推where过滤条件到server端的scan filter上
- 在数据层完成计算,server端的coprocessor执行聚合
- 利用统计信息优化、选择查询计划
- skip scan功能提高扫描速度
2.Phoenix&DBeaver安装
安装步骤如下:
- 不同版本的Phoenix对应不同的HBase版本,找到对应的版本下载并解压。下载地址如下:http://phoenix.apache.org/download.html
- 将 phoenix-[version]-server.jar 添加到HBase的各个节点的lib文件夹下。
- 重启 HBase.
- 配置Phoenix环境变量。
## PHOENIX PATH
export PHOENIX_HOME=/usr/local/phoenix
export PATH=$PATH:$PHOENIX_HOME/bin
3.Phoenix客户端实践
一般可以使用以下三种方式访问Phoenix:
- 使用Python编写的命令行工具(sqlline, sqlline-thin和psql等)
- JDBC API
- SQuirrel / DBeaver
3.1.命令行工具psql使用示例
psql.py主要是用来实现批量加载CSV数据的一个工具,其存放在bin目录下。用法如下:
1.创建一个建表的sql脚本文件 employee.sql:
CREATE TABLE IF NOT EXISTS t_employee (
name VARCHAR PRIMARY KEY,
age UNSIGNED_INT,
gender CHAR(1),
salary UNSIGNED_DOUBLE );
2.创建csv格式的数据文件t_employee.csv 【注意这里的文件后缀必须是csv】:
zhangsan,30,M,5600.50
lisi,35,M,4800.50
wangwu,33,M,9700.00
zhaoliu,54,M,12000.00
赵义,42,M,9200.00
郭芬芳,35,F,4200.00
3.创建一个查询sql脚本文件t_employee_queries.sql:
SELECT name as "员工姓名",gender as "性别",salary as "工资"
FROM t_employee
ORDER BY salary DESC;
4.执行psql.py工具运行sql脚本:
bin/psql.py hdp01 employee.sql t_employee.csv t_employee_queries.sql
执行结果如下:
员工姓名 性 工资
---------------------------------------- - ----------------------------------------
zhaoliu M 12000.0
wangwu M 9700.0
赵义 M 9200.0
zhangsan M 5600.5
lisi