Hbase集成Phoenix映射

1.要取得Phoenix映射Hbase表,需要在Phoenix中创建与hbase中表结构一样的表
获取hbase tables 建表语句
        查询Phoenix所有表
执行脚本:for i in `cat tb`;do sh -x get_sql.sh $i;done
get_sql.sh
:
        ns_table=$(echo $1 |cut -d ':' -f1)
        num_region=$(echo $1 |cut -d ':' -f2)
        echo $ns_table
        echo $num_region
        echo \!describe $ns_table  | /usr/hdp/3.1.4.0-315/phoenix/bin/sqlline.py |grep IDC|awk -F '|' '{print $5,$7}'| sed 's/^ *//g' | grep [A-Z]|grep -v "ROWKEY"|sed s/^/INFO./g|tr '\n' ',' |sed s/^/"CREATE TABLE IF NOT EXISTS $ns_table \ (ROWKEY VARCHAR NOT NULL PRIMARY KEY,"/g|sed s/$/\)\ COMPRESSION=\'GZ\',VERSIONS=1,SALT_BUCKETS=$num_region\;/g | sed 's/,)/)/g' >>sql.text


sql.text(还要自行切割语句)
EG:        CREATE TABLE IF NOT EXISTS IDC.$table_name

2.创建namespace
3.执行sql.test创建Phoenix表
for i in `cat tb`;do sh -x sql.test $i;done

Exception:
创建表时由于COLUMN_FAMILY类型创建错误会导致Phoenix表无法查询
Caused by: org.apache.hadoop.hbase.ipc.RemoteWithExtrasException(org.apache.hadoop.hbase.regionserver.NoSuchColumnFamilyException): org.apache.hadoop.hbase.regionserver.NoSuchColumnFamilyException: Column family INFO does not exist in region
需要重新删除表并创建表
正常执行步骤
{
Phoenix操作

删表(同时会删除Hbase中的表)
drop table IDC.$$tables;

查源(不在)
select * from SYSTEM.CATALOG where TABLE_NAME = '$table_name';

建表(同时会创建Hbase中表)
注意:注意
CREATE TABLE IF NOT EXISTS "$namespace"."$table_name" (
ROWKEY VARCHAR NOT NULL PRIMARY KEY,
"0"."IDCARD_NO_ENCODE" VARCHAR,
"0"."IDCARD_NO_EQ" VARCHAR,
"0"."IDCARD_NO_FUZZY" VARCHAR
) COMPRESSION='GZ',VERSIONS=1,SALT_BUCKETS=null;

查源(正常)
select * from SYSTEM.CATALOG where TABLE_NAME = '$table_name';

Hbase操作
下线表(停顿一下,有可能未下线完成 is_disabled 命令查看是否完成)
disable 'IDC:WULIANG_SEALED_TEST'
删表(不会删除Phoenix中新建表)
drop 'namespace:$table_name'
解析快照
restore_snapshot '$table_name'
上线表
enable 'namespace:$table_name'
查看表(如果表很大要加过滤条件或者去Phoenix中limit查询)
scan 'namespace:$table_name'

Phoenix操作

查表
select * from 'namespace.$table_name' limit 10;

完美
}
 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值