apache phoenix 是一种HBase的SQL皮肤,或者说SQL工具,它弥补了原生的HBase不支持SQL的缺陷。用官网的话说,Phoenix让HBase这种NoSQL数据库又重归SQL行列
同时利用phoenix可以非常方便的给HBase建二级索引。
下面主要介绍如何安装配置 apache phoenix ,以及如何使用apache phoenix进行一些常规的操作
一.安装配置apache phoenix
1.首先从官网下载phoenix的安装包 apache-phoenix-4.14.3-HBase-1.3-bin
2.tar -zxvf apache-phoenix-4.14.3-HBase-1.3-bin -C /opt/module 解压到/opt/module目录
3.切换到 phoenix的目录,将phoenix-4.14.3-HBase-1.3-client.jar 和 phoenix-4.14.3-HBase-1.3-server.jar 拷贝到HBase的lib目录
二.启动apache phoenix
1.首先启动zookeeper
2.然后启动hdfs
3.再启动HBase
4.最后启动Apache Phoenix ,启动命令:./bin/sqlline.py node2,node3,node4:2181
三.常见操作
1.查看表 : !tables
2.建表 : create table "表名"("字段名" 字段类型) ,
例如建一个叫student的表,字段有id,和name
create table "student" ("id" bigint primary key, "name" varchar);
注意:建表时必须指明主键,同时表字段名和表名要加双引号,如果不加,则phoenix会默认它们为大写。
3.插入数据
upsert into "student" values(123, ‘zhangsan‘);
注意:phoenix中字符串用单引号包裹,不能用双引号包裹
4.查询记录
select 字段 from 表名 where 条件;
select * from student where id=123;
5.删除记录
delete from 表名 where 条件;
6.删除表
drop table 表名;
7.退出命令行
!quit
三.利用phoenix建二级索引
1.配置HBase支持Phoenix创建二级索引
添加如下配置到HBase的HRegionServer 节点的hbase-site.xml
<!-- phoenix regionserver 配置参数 -->
<property>
<name>hbase.regionserver.wal.codec</name>
<value>org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec</value>
</property>
<property>
<name>hbase.region.server.rpc.scheduler.factory.class</name>
<value>org.apache.hadoop.hbase.ipc.PhoenixRpcSchedulerFactory</value>
<description>Factory to create the Phoenix RPC Scheduler that uses separate queues for index and metadata updates</description>
</property>
<property>
<name>hbase.rpc.controllerfactory.class</name>
<value>org.apache.hadoop.hbase.ipc.controller.ServerRpcControllerFactory</value>
<description>Factory to create the Phoenix RPC Scheduler that uses separate queues for index and metadata updates</description>
</property>
2. 添加如下配置到Hbase中Hmaster节点的hbase-site.xml中
<!-- phoenix master 配置参数 -->
<property>
<name>hbase.master.loadbalancer.class</name>
<value>org.apache.phoenix.hbase.index.balancer.IndexLoadBalancer</value>
</property>
<property>
<name>hbase.coprocessor.master.classes</name>
<value>org.apache.phoenix.hbase.index.master.IndexMasterObserver</value>
</property>
3.验证