返回 导航

大数据

hangge.com

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 这边插入一条数据:
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)

回到顶部