Phoenix
一、Phoenix概述
- Phoneix简介
构建在HBase上的SQL层
使用标准SQL在HBase中管理数据
使用JDBC来创建表,插入数据、对HBase数据进行查询
Phoenix JDBC Driver容易嵌入到支持JDBC的程序中
Phoenix支持类SQL语法 - Phoenix无法代替RDBMS
原因:缺乏完整性约束,很多领域尚不成熟 - Phoenix使HBase更易用
- Phoenix支持的关键字类型
Standard SQL Data Types --标准SQL 数据类型
SELECT, UPSERT, DELETE --UPSERT与标准SQL不同
JOINs: Inner and Outer
Subqueries
Secondary Indexes
GROUP BY, ORDER BY, HAVING
AVG, COUNT, MIN, MAX, SUM
Primary Keys, Constraints
CASE, COALESCE
VIEWs
PERCENT_RANK, LAST|FIRST VALUE
UNION ALL
Cross Joins
Windowing Functions --窗口函数
Transactions --事务
Authorization
Replication Management
二、Phoenix应用场景
- Phoenix适合场景
1)快速而容易地构建基于HBase的应用程序
2)需要极大的规模、性能和并发性的SQL应用程序
3)在转换到Hadoop时重用已有的SQL技能
4)BI工具(对SQL支持较好) - Phoenix不适合场景
1)涉及大型Join操作或高级SQL特性的复杂SQL查询
2)Full-Table Scans
3)ETL jobs
三、Phoenix操作HBase
3.1 Phoenix安装
3.1.1上传安装包,解压
tar -zxf …(包名)
3.1.2拷贝jar包
phoenix-4.14.0-chd5.14.2-server.jar 拷贝到hbase的lib目录下
ps:如果是集群需要拷贝到每台机器上
拷贝完成需要重启HBase–加载jar包
3.2 命令操作
3.2.1 启动Phoenix
./sqlline.py localhost -- 其中localhost为Zookeeper所在节点的主机名
3.2.2 hbase和Phoenix查看表
hbase会多出来几张表
Phoenix
命令:!table
3.2.3 使用Phenix建表
create table company (COMPANY_ID INTEGER PRIMARY KEY,NAME VARCHAR(200));
ps: Phoenix中建表需要指定Primary key ,并且没有int型,要用Integer
3.2.4 插入数据
upsert into company (1,"baidu"); -- 使用语法跟sql很像
3.2.5 查看表
Phenix:
SELECT * FROM company;
hbase中查看数据:
ps:habse中可以访问phoenix创建的表,但是会出现16进制
Phonix中不可以访问hbase中创建的表