Hadoop之SQL on HBase
1. HBase的特性
1. HBase没有数据类型
2. HBase不支持创建索引
2. Phoenix的作用
1. 为了解决HBase上面的问题
2. 他支持DDL,DML,支持事务,支持二级索引,遵循ANSI SQL标准
3. Phoenix的安装
1. 下载Phoenix
https://dlcdn.apache.org/phoenix/phoenix-5.1.2/phoenix-hbase-2.1-5.1.2-bin.tar.gz
2. 解压并设置软链接
tar -zxvf phoenix-hbase-2.1-5.1.2-bin.tar.gz
ln -s phoenix-hbase-2.1-5.1.2-bin phoenix
3. 复制phoenix的jar包到/usr/local/hbase/lib目录下
cp phoenix-server-hbase-2.1-5.1.2.jar /usr/local/hbase/lib/
4. 修改属主
chown -R hadoop.hadoop phoenix-server-hbase-2.1-5.1.2.jar
5. 修改环境变量
#phoenix export PHOENIX_HOME=/usr/local/phoenix export PHOENIX_CLASSPATH=$PHOENIX_HOME export PATH=$PATH:$PHOENIX_HOME/bin
source /etc/profile
6. 重启hbase
7. 使用phoenix连接hbase
sqlline.py 172.16.1.228,172.16.1.229,172.16.1.230:2181
8. phoenix退出hbase连接会话
!exit
4. phoenix的使用
1. 常用操作
1. 库操作
1. 开启hbase支持phoenix创建数据库,在hbase的hbase-site.xml文件添加属性
<property>
<name>phoenix.schema.isNamespaceMappingEnabled</name>
<value>true</value>
</property>
<property>
<name>phoenix.schema.mapSystemTablesToNamespace</name>
<value>true</value>
</property>
还需要在phoenix的hbase-site.xml文件添加上面的属性
2. 创建库
create schema "ceshi";
3. 删除库
drop schema if exists "tank_schema";
4. 切换数据库
use "ceshi";
2. 表操作
1. 创建表
CREATE TABLE IF NOT EXISTS student( id VARCHAR primary key, name VARCHAR, addr VARCHAR);
2. 删除表
drop table "ceshi"."STUDENT1";
3. 查看所有表
!tables或者!table
4. 添加字段
alter table "ceshi"."STUDENT" add "sex" varchar(18);
5. 删除字段
alter table "ceshi"."STUDENT" drop column"sex" ;
3. 表的增删改查
1. 插入数据
upsert into student values('1001','KOBE','LA');
2. 查看数据
select * from student1 where id='1001';
3. 删除数据
delete from student1 where id ='1001';
4. 修改数据
upsert into student values('1001','ONEAL','LA');
2. 表的映射
默认情况下,Phoenix无法查看HBase中已存在的表,需要创建HBase表到Phoenix的映射
Phoenix中创建的新表可以在HBase中查看到,HBase会自动将表名转成大写
1. 映射配置
1. 在HBase中创建表
create 'yangjianbo','info','grade'
put 'yangjianbo','s001','info:name','Tom'
put 'yangjianbo','s001','info:name','houzhen'
2. 在Phoenix创建视图并映射HBase中的表
CREATE VIEW "yangjianbo" (pk varchar PRIMARY KEY,"info"."name" VARCHAR,"grade"."money" VARCHAR);
3. 在Phoenix删除视图
drop view "yangjianbo";
HBase的原表不会被删除
3. 二级索引
HBase只支持rowkey上的索引,不支持其它字段的索引
Phoenix支持在其它字段上添加索引
1. 启用二级索引
修改所有hbase的hbase-site.xml文件,添加以下内容
<property>
<name>hbase.regionserver.wal.codec</name>
<value>org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec</value>
</property>
2. 索引分类

浙公网安备 33010602011771号