大数据之Phoenix和Squirrel

1 apache-phoenix-5.0.0-HBase-2.0安装与简单使用

HBase版本:hbase-2.0.5

官网地址:https://hbase.apache.org/

Phoenix版本:phoenix-5.0.0-HBase-2.0

Phoenix官网地址:http://phoenix.apache.org/download.html

Phoenix安装文档:http://phoenix.apache.org/installation.html

注意:hbase的版本一定要与phoenix的版本保持一致,否则运行报错

安装步骤:

1 解压下载之后的版本,放到指定的目录下

2 复制phoenix安装目录下的phoenix-core-5.0.0-HBase-2.0.jarphoenix-5.0.0-HBase-2.0-server.jar到各个hbase节点的lib 目录下

cp phoenix-core-5.0.0-HBase-2.0.jar phoenix-5.0.0-HBase-2.0-server.jar /hbase/lib
使用scp或者sync命令同步到其他hbase节点

此步骤需要注意:不要将phoenix-5.0.0-HBase-2.0-client.jar的包放到/hbase/lib目录,会报错,提示java.lang.NoSuchMethodError: com.ctc.wstx.stax.WstxInputFactory.createSR;具体报错信息如下:
在这里插入图片描述

3 编辑环境变量

vim /etc/profile.d/my_env.sh
复制如下到环境变量中
#phoenix
export PHOENIX_HOME=/home/hadoop/app/apache-phoenix-5.0.0-HBase-2.0-bin
export PATH=$PATH:$PHOENIX_HOME/bin
使环境变量生效
source /etc/profile.d/my_env.sh

4 测试是否生效

bin/sqlline.py hadoop101,hadoop102,hadoop103:2181

在这里插入图片描述

问题:如果运行bin/sqlline.py一直处于卡住状态,则修改PHOENIX_HOME/bin/log4j.properties

psql.root.logger=DEBUG,console,DRFA
log4j.threshold=DEBUG

查看具体的日志信息,获取具体问题,在针对性的进行解决

我的启动时报错如下:

Caused by: org.apache.hadoop.hbase.ipc.RemoteWithExtrasException(org.apache.hadoop.hbase.NotServingRegionException): org.apache.hadoop.hbase.NotServingRegionException: hbase:meta,,1 is not online on hadoop102,16020,1603519584313

则进入到Zookeeper的客户端执行如下命令

bin/zkCli.sh
deleteall /hbase
quit
hadoop dfs -rm -r -skipTrash /hbase

是由于我重新安装了Hbase导致的,未及时的清理之前hbase残留信息

https://www.cnblogs.com/kekukekro/p/6339587.html

2 Phoenix操作

2.1 Phoenix Shell

2.1.1表的操作
  • 1 显示所有表
!table或!tables
  • 2 创建表
直接指定单个列作为RowKey
create table if not exists student(
id varchar primary key,
name varchar);

在Phoenix中,表名和字段会自动转换为大写;如果要小写,使用双引号,如"student"

指定多个列的联合作为RowKey
create table if not exists us_population(
state char(2) not null,
city varchar not null,
population bigint
constraint my_pk primary key (state,city));
  • 3 插入数据
upsert into student values('1001','zhangsan');

在phoenix是没有insert语句的,而是upsert语句;upsert有两种用法,upsert into 和upsert select
upsert into语句:单条插入外部数据
upsert select语句:类似于hive中的insert select 语句,批量插入其它表中的数据

UPSERT INTO US_POPULATION (STATE,CITY,POPULATION) SELECT STATE,CITY,POPULATION FROM AK_POPULATION WHERE POPULATION < 40000;
  • salt_buckets: Salting能够通过预分区(pre-splitting)数据到多个region中来显著提升读写性能

    本质是在hbase中,rowkey的byte数组的第一个字节位置设定一个系统生成的byte值,这个byte值是由主键生成rowkey的byte数组做一个哈希算法,计算得来的。Salting之后可以把数据分布到不同的region上,这样有利于phoenix并发的读写操作。关于SaltedTable的说明在 http://phoenix.apache.org/salted.html

    CREATE TABLE TEST (HOST VARCHAR NOT NULL PRIMARY KEY, DESCRIPTION  VARCHAR) SALT_BUCKETS=16;
    

    SALT_BUCKETS的值范围在(1 ~ 256)

    如果我们用Phoenix创建了一个saltedtable,那么向该表中写入数据时,原始的rowkey的前面会被自动地加上一个byte(不同的rowkey会被分配不同的byte),使得连续的rowkeys也能被均匀地分布到多个regions

    UPSERT INTO TEST (HOST,DESCRIPTION) valu
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值