Phoenix 实践——Phoenix 表的视图构建(表映射)总结小记
Posted 扫地增
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Phoenix 实践——Phoenix 表的视图构建(表映射)总结小记相关的知识,希望对你有一定的参考价值。
Phoenix和HBase表之间的关系
官方说默认情况下,直接在
hbase
中创建的表,通过phoenix
是查看不到的。如图POPULATION
是在phoenix
中直接创建的所以可以看到,而像kylin
相关表是在hbase
中直接创建的或者是我们在hbase
中直接创建的表,在phoenix
中是查看不到的。
如果要在phoenix
中操作直接在hbase
中创建的表,则需要在phoenix
中进行表的映射。映射方式有两种:视图映射和表映射
测试:
- 首先在
HBase
中准备phoenix_table_mapping_user_info_test
表,表的结构如下:
RowKey | Name | Company | ||
---|---|---|---|---|
user_id | firstname | lastname | name | address |
- 建表我们建立
phoenix_mapping_table_uesr_info_test
表
create 'phoenix_table_mapping_user_info_test','name','company';
我们看到在phoenix
中没有这张表
- 在
phoenix
中建立视图映射:需要注意的是,Phoenix
创建的视图是只读的,所以只能用来做查询,无法通过视图对源数据进行修改等操作。如果使用方只有只读权限我们就可以使用这个。
create view "phoenix_table_mapping_user_info_test"
(
user_id varchar primary key,
"name"."firstname" varchar,
"name"."lastname" varchar,
"company"."name" varchar,
"company"."address" varchar
);
我们从
hbase
向phoenix_table_mapping_user_info_test
表中插数据,在phoenix
中查看
--hbase
put 'phoenix_table_mapping_user_info_test','1001','name:firstname','San';
put 'phoenix_table_mapping_user_info_test','1001','name:lastname','Zhang';
put 'phoenix_table_mapping_user_info_test','1001','company:name','aiyunxiao';
put 'phoenix_table_mapping_user_info_test','1001','company:address','北京朝阳';
--phoenix查询如下:
select * from "phoenix_table_mapping_user_info_test";
为了进行下面操作我们在这里需要删除视图
drop view "phoenix_table_mapping_user_info_test";
- 在
phoenix
中建立表映射,创建表映射有两种方式:
HBase
中已经存在表
当
HBase
中已经存在表时,可以以类似创建视图的方式创建关联表,只需要将create view
改为create table
即可
--建表
create table "phoenix_table_mapping_user_info_test"
(
user_id varchar primary key,
"name"."firstname" varchar,
"name"."lastname" varchar,
"company"."name" varchar,
"company"."address" varchar
);
--查询验证
select * from "phoenix_table_mapping_user_info_test";
- 当表不存在时,
当
HBase
中不存在表时,可以直接使用create table
指令创建需要的表,系统将会自动在Phoenix
和HBase
中创建表,并会根据指令内的参数对表结构进行初始化。这种方式其实就是在phoenix
中建表
create table "phoenix_table_mapping_user_info_test2"
(
user_id varchar primary key,
"name"."firstname" varchar,
"name"."lastname" varchar,
"company"."name" varchar,
"company"."address" varchar
) column_encoded_bytes=0;
#验证如下:
#phoenix
!table
#hbase
list
以上是关于Phoenix 实践——Phoenix 表的视图构建(表映射)总结小记的主要内容,如果未能解决你的问题,请参考以下文章
Phoenix实践 —— Phoenix SQL常用基本语法总结小记
Phoenix实践——Phoenix配置支持二级索引和使用小记
Phoenix实践——Phoenix图形化工具SQuirrel SQL安装使用小记