代码拉取完成,页面将自动刷新
mkdir -p /opt/soft
cd /opt/soft
wget https://dlcdn.apache.org/phoenix/phoenix-5.1.3/phoenix-hbase-2.5-5.1.3-bin.tar.gz
tar -zxvf phoenix-hbase-2.5-5.1.3-bin.tar.gz
mv phoenix-hbase-2.5-5.1.3-bin phoenix
vim /etc/profile
export PHOENIX_HOME=/opt/soft/phoenix
export PATH=$PATH:$PHOENIX_HOME/bin
完整
export JAVA_HOME=/opt/soft/jdk-8
export ZOOKEEPER_HOME=/opt/soft/zookeeper-3
export HDFS_NAMENODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_ZKFC_USER=root
export HDFS_JOURNALNODE_USER=root
export HADOOP_SHELL_EXECNAME=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
export HADOOP_HOME=/opt/soft/hadoop-3
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native
export HBASE_HOME=/opt/soft/hbase-2
export PHOENIX_HOME=/opt/soft/phoenix
export PATH=$PATH:$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HBASE_HOME/bin:$PHOENIX_HOME/bin
source /etc/profile
scp /opt/soft/phoenix/phoenix-server-hbase-2.5-5.1.3.jar root@lihaozhe01:/opt/soft/hbase-2/lib
scp /opt/soft/phoenix/phoenix-server-hbase-2.5-5.1.3.jar root@lihaozhe02:/opt/soft/hbase-2/lib
scp /opt/soft/phoenix/phoenix-server-hbase-2.5-5.1.3.jar root@lihaozhe03:/opt/soft/hbase-2/lib
stop-hbase.sh
start-hbase.sh
sqlline.py lihaozhe01,lihaozhe02,lihaozhe03
注意:会出现如下报错信息
/usr/bin/env: ‘python’: No such file or directory
whereis python3
# 这里是 whereis python3 的 提示信息
python3: /usr/bin/python3
ln /usr/bin/python3 /usr/bin/python
# 再次连接
sqlline.py lihaozhe01,lihaozhe02,lihaozhe03
show schemas;
使用 !table 或者 !tables
show tables;
phoenix中没有database,有的是schema,相当于mysql中的数据库
create schema "lihaozhe";
会出现以下错误:
原因是需要在hbase的conf目录中的hbase-site.xml配置一个参数:
此参数是phoenix的schema和hbase的nameSpace命名空间做映射。
phoenix.schema.isNamespaceMappingEnabled将它设置成true
<property>
<name>phoenix.schema.isNamespaceMappingEnabled</name>
<value>true</value>
</property>
<property>
<name>phoenix.schema.mapSystemTablesToNamespace</name>
<value>true</value>
</property>
<property>
<name>hbase.regionserver.wal.codec</name>
<value>org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec</value>
</property>
分发 hbase-site.xml 到其它节点
scp /opt/soft/hbase-2/conf/hbase-site.xml root@lihaozhe02://opt/soft/hbase-2/conf/
scp /opt/soft/hbase-2/conf/hbase-site.xml root@lihaozhe03://opt/soft/hbase-2/conf/
分发时之后重启 habse
再次创建schema: 注意:schema lihaozhe" 加双引号映射到hbase会是小写的,不加双引号默认都是大写的
create schema "lihaozhe";
use "lihaozhe";
https://phoenix.apache.org/columnencoding.html
unsigned_long
create table "tb_user"(
"user_id" varchar primary key,
"name" varchar,
"gender" varchar,
"home_address" varchar,
"company_address" varchar
);
create table "tb_emp"(
"emp_id" varchar primary key,
"info"."name" varchar,
"info"."gender" varchar,
"logistics"."home_address" varchar,
"logistics"."company_address" varchar
) COLUMN_ENCODED_BYTES = 0;
upsert into "tb_user" values ('1001','lhz','1','jilin','shanxi');
upsert into "tb_emp" values (1001,'lhz',1,'jilin','shanxi');
show tables;
drop table "tb_user";
在 hbase 上创建表并插入数据
create 'lihaozhe:person', 'info', 'msg'
put 'lihaozhe:person',1001,'info:name','user1001'
put 'lihaozhe:person',1001,'info:gender',1
put 'lihaozhe:person',1001,'msg:slogan','hello world'
put 'lihaozhe:person',1002,'info:name','user1002'
put 'lihaozhe:person',1002,'info:gender',0
put 'lihaozhe:person',1002,'msg:slogan','hello'
put 'lihaozhe:person',1003,'info:name','user1003'
put 'lihaozhe:person',1003,'info:gender',1
put 'lihaozhe:person',1003,'msg:slogan','hi'
create view "person"(
"person_id" varchar primary key,
"info"."name" varchar,
"info"."gender" varchar,
"msg"."slogan" varchar
) column_encoded_bytes=0;
select * from "person";
select "info"."name" from "person";
drop view "person";
- 当 HBase 中已经存在表时,可以以类似创建视图的方式创建关联表,只需要将create table 改为 create view 即可。
- 当 HBase 中不存在表时,可以直接使用 create table 指令创建需要的表,系统将会自动在 Phoenix 和 HBase 中创建 person_infomation 的表,并会根据指令内的参数对表结构进行初始化。
create table "person"(
"person_id" varchar primary key,
"info"."name" varchar,
"info"."gender" varchar,
"msg"."slogan" varchar
) column_encoded_bytes=0;
select * from "person";
upsert into "person" values('1004','user1004',0,'hw');
upsert into "person" ("person_id","gender") values(1001,0);
drop table "person";
!quit
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。