phoenix-5.0.0映射hbase已有的表

phoenix安装好以后,我们发现在phoenix中创建的表,在hbase中也能看到,但是hbase已存在的表却没有出现在phoenix中,因此我们需要手动将hbase的表映射到phoenix中。

phoenix映射hbase表的方式分为两种,一种是表映射,一种是视图映射。

  • 表映射:在映射表中可以进行增删改查操作,如果在phoenix中将映射表删除,hbase中对应的表也会被删除。
  • 视图映射:在映射表中只能进行查询操作,而不可以进行增删改操作。如果将phoenix中的映射表删除,hbase中对应的表不会被删除。所以如果是“只读不写"最好使用视图映射,避免误删数据。

官方文档http://phoenix.apache.org/language/index.html#

下面具体看一下两种映射方式:

1. 表映射

  • 首先在hbase中创建表并插入数据备用
create 'STUDENT', 'INFO'
put 'STUDENT', 'bbbZZZ1004', 'INFO:NAME', 'WeiDong'
put 'STUDENT', 'bbbZZZ1004', 'INFO:AGE', '27'
put 'STUDENT', 'bbbZZZ1004', 'INFO:HOME', 'ZhouKou'
put 'STUDENT', 'bbbZZZ1005', 'INFO:NAME', 'XiaoMeng'
put 'STUDENT', 'bbbZZZ1005', 'INFO:AGE', '27'
put 'STUDENT', 'bbbZZZ1005', 'INFO:HOME', 'YuLin'
put 'STUDENT', 'bbbTTT1006', 'INFO:NAME', 'GuiPing'
put 'STUDENT', 'bbbTTT1006', 'INFO:AGE', '39'
put 'STUDENT', 'bbbTTT1006', 'INFO:HOME', 'ZhengZhou'
put 'STUDENT', 'bbbTTT1007', 'INFO:NAME', 'xiaoming'
put 'STUDENT', 'bbbTTT1007', 'INFO:AGE', '10'
put 'STUDENT', 'bbbTTT1007', 'INFO:HOME', 'hebei'
  • 然后在phoenix中创建对应的映射表
create table student (
    id varchar primary key,
    info.name varchar,
    info.age  varchar,
    info.home varchar
)column_encoded_bytes=0

注意:末尾要加上column_encoded_bytes=0,不加的话select时会出现查不出数据的情况

  • 查看刚刚创建的表
查看表 !table
  • 查询一下,可以看得到数据,映射成功
    在这里插入图片描述
  • 另外增删改就不做演示了,可以自己尝试一下
插入(更新)数据 upsert into student values('bbbAAA1003','xixi','21','beijing');
删除数据 delete from teacher where home='beijing';

hbase和phoenix无论哪一端插入/更新/删除数据,另一端对应的表都会同步插入/更新/删除

2. 视图映射

  • 首先在hbase中创建表并插入数据备用
create 'TEACHER', 'INFO'
put 'TEACHER', 'bbbZZZ1004', 'INFO:NAME', 'WeiDong'
put 'TEACHER', 'bbbZZZ1004', 'INFO:AGE', '27'
put 'TEACHER', 'bbbZZZ1004', 'INFO:HOME', 'ZhouKou'
put 'TEACHER', 'bbbZZZ1005', 'INFO:NAME', 'XiaoMeng'
put 'TEACHER', 'bbbZZZ1005', 'INFO:AGE', '27'
put 'TEACHER', 'bbbZZZ1005', 'INFO:HOME', 'YuLin'
put 'TEACHER', 'bbbTTT1006', 'INFO:NAME', 'GuiPing'
put 'TEACHER', 'bbbTTT1006', 'INFO:AGE', '39'
put 'TEACHER', 'bbbTTT1006', 'INFO:HOME', 'ZhengZhou'
put 'TEACHER', 'bbbTTT1007', 'INFO:NAME', 'xiaoming'
put 'TEACHER', 'bbbTTT1007', 'INFO:AGE', '10'
put 'TEACHER', 'bbbTTT1007', 'INFO:HOME', 'hebei'
  • 然后在phoenix中创建对应的映射表
create view teacher (
    pk varchar primary key,
    info.name varchar,
    info.age  varchar,
    info.home varchar
)
  • 查看刚刚创建的表
查看表 !table
  • 查询一下,可以看得到数据,映射成功
    在这里插入图片描述
  • 注意:视图映射这种方式只可以查询,如果强行插入数据则会报错
0: jdbc:phoenix:myhbase,xmhl,xmhl30:2181> upsert into teacher values('bbbAAA1003','xixi','21','beijing');
Error: ERROR 505 (42000): Table is read only. (state=42000,code=505)

hbase插入/更新/删除数据,对应的phoenix映射表中也会同步数据

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值