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
  • 查询一下,可以看得到数据,映射成功
    phoenix-5.0.0映射hbase已有的表_第1张图片
  • 另外增删改就不做演示了,可以自己尝试一下
插入(更新)数据 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
  • 查询一下,可以看得到数据,映射成功
    phoenix-5.0.0映射hbase已有的表_第2张图片
  • 注意:视图映射这种方式只可以查询,如果强行插入数据则会报错
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映射表中也会同步数据

你可能感兴趣的:(phoenix-5.0.0映射hbase已有的表)