本文主要是介绍Phoenix 搭建与报错处理,hbase与phoenix表与表进行关联,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Overview | Apache Phoenix 官网
Phoenix Downloads | Apache Phoenix 下载
phoenix是Hbase的SQL壳 (可以写sql)
phoenix的用途 : 连接Hbase当SQL的数据库使用,语法有细微差别
访问Hbase的数据,映射view。使用select 查询进行分析,统计,汇总
另一种的壳可以选kylin
1.下载和Hbase对应的版本
例:apache-phoenix-4.14.0-cdh5.14.2-bin.tar
2.解压
例:tar -zxvf apache-phoenix-4.14.0-cdh5.14.2-bin.tar.gz
3.mv到/opt/install/phoenix
4.拷贝/opt/install/phoenix/phoenix-xxx-server.jar 到hbase的lib下。(所有节点)
例:cdh版的是phoenix-4.14.0-cdh5.14.2-server.jar ,apache版的是 phoenix-4.14.0-Hbase-server.jar
linux>scp -r phoenix-4.14.0-cdh5.14.2-server.jar 192.168.58.200:/opt/install/hbase/lib/
linux>scp -r phoenix-4.14.0-cdh5.14.2-server.jar 192.168.58.201:/opt/install/hbase/lib/
linux>scp -r phoenix-4.14.0-cdh5.14.2-server.jar 192.168.58.202:/opt/install/hbase/lib/
linux>scp -r phoenix-4.14.0-cdh5.14.2-server.jar 192.168.58.203:/opt/install/hbase/lib/
5.重启hbase
linux>stop-hbase.sh
linux>start-hbase.sh
6.启动/phoenix/bin/sqlline.py 192.168.58.200:2181
7.报错处理
错误1:Error: ERROR 103 (08004): Unable to establish connection. (state=08004,code=103)
linux> cp /opt/install/hbase/conf/hbase-site.xml /opt/install/phoenix/bin/
linux> cp /opt/install/hadoop/etc/hadoop/hdfs-site.xml /opt/install/phoenix/bin
错误2:Error: SYSTEM.CATALOG (state=08000,code=101)
方法1:/bin/hbase zkcli (此方法推荐)
ls /hbase/table (执行hbase zkcli 先不用管有没有报错直接输入 ls /hbase/table)
如果有下面的表:SYSTEM.CATALOG, SYSTEM.SEQUENCE, SYSTEM.STATS, and SYSTEM.FUNCTION,则执行如下命令
rmr /hbase/table/SYSTEM.CATALOG
rmr /hbase/table/SYSTEM.SEQUENCE
rmr /hbase/table/SYSTEM.STATS
rmr /hbase/table/SYSTEM.FUNCTION
方法2:/bin/hbase clean --cleanAll(此种方法不建议会清空hbse内的表)
在执行上述命令之前:先关闭hbase(包括HMaster和regionServer)
执行完后重新启动hbase
通过 ./sqlline.py 进入phoenix,系统会自动创建Phoenix的系统表
注意:hbase clean --cleanAll 执行完后hbase内的表会清空,注意关联hive的内部表
成功进入界面
进入后输入>!help
jdbc:phoenix:192.168.58.201:2181> !help //查看帮助
jdbc:phoenix:192.168.58.201:2181> !tables //查看表
jdbc:phoenix:192.168.58.201:2181>CREATE TABLE test (
id varchar PRIMARY KEY,
name varchar ,
age varchar
); //创建表创建后可在hbase中list查看到
注意:hbase区分大小写;Phoenix不区分大小写,默认情况下都是大写,变小写加上双引号就可以
phoenix插入数据: updata+insert结合(upsert)更新数据与这个语句是一样的
jdbc:phoenix:192.168.58.201:2181>upsert into user(id, name, age) values('001', 'lisi', '21');
phoenix删除表
jdbc:phoenix:192.168.58.201:2181>drop table 表名;
phoenix删除语句:
jdbc:phoenix:192.168.58.201:2181>delete from 表名 where 字段='值';
phoenix指定列族
jdbc:phoenix:192.168.58.201:2181>CREATE TABLE test (
id varchar PRIMARY KEY,
INFO.name varchar ,
INFO.age varchar
);
在hbase shell中查看
phoenix查询语句:
jdbc:phoenix:192.168.58.201:2181>select * from 表名;
jdbc:phoenix:192.168.58.201:2181>select name from 表名 where 字段='值';
hbase与phoenix表与表进行关联
在phoenix中:列的顺序可以不一致,表名称必须一致,以及列名称一致
假如在HBase中有一张表
在phoenix做映射创建
jdbc:phoenix:192.168.58.201:2181>create view "test22"(
"ROW" varchar primary key,
"base"."name" varchar,
"base"."gender" varchar,
"base"."birth_date" varchar
);
注意事项:
1.phoenix验证的时候,查询表名需要用双引号括起来,强制不转换成大写
2.创建phoenix时,表名和列族以及列名需要用双引号括起来,不然会自动将小写转换成大写。
3.创建关联的时候要用create view不要create table 用view能显示出数据,table不显示数据,而且phoenix删除表会影响hbase与hive内部表
因为:hbase无表 phoenix 创建(table)会映射到hbase
这篇关于Phoenix 搭建与报错处理,hbase与phoenix表与表进行关联的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!