Phoenix 实践——Phoenix 表的视图构建(表映射)总结小记

Posted 扫地增

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Phoenix 实践——Phoenix 表的视图构建(表映射)总结小记相关的知识,希望对你有一定的参考价值。

Phoenix和HBase表之间的关系

官方说默认情况下,直接在hbase中创建的表,通过phoenix是查看不到的。如图POPULATION是在phoenix中直接创建的所以可以看到,而像kylin相关表是在hbase中直接创建的或者是我们在hbase中直接创建的表,在phoenix中是查看不到的。

在这里插入图片描述在这里插入图片描述
如果要在phoenix中操作直接在hbase中创建的表,则需要在phoenix中进行表的映射。映射方式有两种:视图映射和表映射

测试:

  1. 首先在HBase中准备phoenix_table_mapping_user_info_test表,表的结构如下:
RowKeyNameCompany
user_idfirstnamelastnamenameaddress
  1. 建表我们建立phoenix_mapping_table_uesr_info_test
create 'phoenix_table_mapping_user_info_test','name','company';

在这里插入图片描述在这里插入图片描述
我们看到在phoenix中没有这张表

  1. 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
);

我们从hbasephoenix_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";

在这里插入图片描述

  1. 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指令创建需要的表,系统将会自动在PhoenixHBase中创建表,并会根据指令内的参数对表结构进行初始化。这种方式其实就是在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在2345公司的实践(转)

Phoenix实践——Phoenix图形化工具SQuirrel SQL安装使用小记

Lindrom 实践 | Spark 对接 Lindorm Phoenix 5.x 轻客户端

用于巨大 HBase 表的 Phoenix View