HBase - Phoenix的安装使用教程4(映射已有的HBase表)
作者:hangge | 2020-09-04 08:10
如果想用 Phoenix 来进行操作由 HBase 客户端创建的表,那么必须先要进行表的映射,因为 SYSTEM.CATALOG 表中并没有维护这些表的元数据。
而 phoenix 映射 hbase 表的方式分为两种,一种是表映射,一种是视图映射。下面通过样例分别进行演示。
四、映射已有的 HBase 表
1,准备工作
(1)假设我们使用 HBase 创建一个 student 表:
create 'student', 'info'
(2)接着往这张表里插入一些数据;
put 'student', '1001', 'info:name', '大刘' put 'student', '1001', 'info:age', '100' put 'student', '1002', 'info:name', '小星' put 'student', '1002', 'info:age', '20'
(3)查询下 student 表的数据:
scan "student"
2,表映射
表映射特点:在映射表中可以进行增删改查操作,如果在 phoenix 中将映射表删除,hbase 中对应的表也会被删除。
(1)在 phoenix 命令行中执行如下命令创建对应的映射表:
注意:
- HBase 中的 RowKey 映射 Phoenix 的主键,HBase 中的 Column 映射 Phoenix 的列,且使用“列簇名.列名”进行映射。
- 末尾要加上 column_encoded_bytes=0,不加的话 select 时会出现查不出数据的情况。
CREATE TABLE IF NOT EXISTS "student" ( "ROW" VARCHAR primary key, "info"."name" VARCHAR, "info"."age" VARCHAR )column_encoded_bytes=0;
(2)查询一下可以看得到数据,说明映射成功:
注意:创建映射后 HBase 里表的数据可能会被清空,我们在 HBase 那边重新插入数据即可。
(3)hbase 和 phoenix 无论哪一端插入/更新/删除数据,另一端对应的表都会同步插入/更新/删除。比如我们在 phoenix 这边插入一条数据:
(4)hbase 这边也可以看到最新插入的数据:
upsert into "student" values('1003','hangge','1');
(4)hbase 这边也可以看到最新插入的数据:
3,视图映射
视图映射特点:在映射表中只能进行查询操作,而不可以进行增删改操作。如果将 phoenix 中的映射表删除,hbase 中对应的表不会被删除。所以如果是“只读不写”最好使用视图映射,避免误删数据。
(1)在 phoenix 命令行中执行如下命令创建对应的映射视图:
注意:末尾要加上 column_encoded_bytes=0,不加的话 select 时会出现查不出数据的情况。
CREATE VIEW "student" ( "ROW" VARCHAR primary key, "info"."name" VARCHAR, "info"."age" VARCHAR )column_encoded_bytes=0;
(2)查询一下可以看得到数据,说明映射成功:
注意:创建映射后 HBase 里表的数据可能会被清空,我们在 HBase 那边重新插入数据即可。
(3)hbase 插入/更新/删除数据,对应的 phoenix 映射表中也会同步数据。但要注意的是,视图映射这种方式只可以查询,如果强行插入数据则会报错。
全部评论(0)