phoenix的映射

Phoenix操作Hbase数据的时候有两种方式,也可以称作是两种映射,分别是视图和表

区别就在于,视图是专门用来让hbase的表可以在phoenix中可见,但是它只可以做查询,不可以做其他的事情,视图创建前,hbase中一定要有这个视图对应的表,且被删除之后只是映射消失表不可见了而已,而hbase中的表不会消失,创建视图的语句如下

create view test(
	“Id” varchar,
	“name”.”first” varchar
);

创建视图的时候视图名字要和Hbase里面的表名一致

而表不同与视图映射,它可以直接在phoenix中创建,如果hbase有这个表,就会自动映射,没有则会自动在hbase中创建这个表,表映射可以做所有的表操作,同时phoenix一旦删除这个表,hbase中的对应表也将删除,但是反过来hbase中删除被映射的表,phoenix中的映射表还在,不过这个映射在使用的时候会出问题

且表映射时要有一个注意点,如果映射的是hbase中的已有表那么必须在建立表映射的时候指定字符集,因为两个软件之间的编码不同,而不是已有表则不需要,但是为了安全起见我们都加上字符集的指定,因此语句为:

create table test(
	“id” varchar,
	“name”.”first” varchar
)column_encoded_bytes=0;

我们还要注意,无论是表映射还是视图映射,想要映射那个两个软件之间的表名、列族名、列名等,必须一致,且严格来说phoenix中的表映射就是我们常规操作的表,只是它的作用不一样而已,因此不要在phoenix是否可以单独建立表这一问题上纠结,且在上面的语句中我没有写如何指定主键,是因为phoenix中主键可以有多个,我们可以在某一个列名后添加primary key关键字,还可以在建立语句的小括号中的最后一行指定所有的主键,这和mysql差不多

constraint 主键别名 primary key(所有主键用逗号隔开)

而且表映射操作中,还有一个比较有意思的事,前面我的建表语句中,表名都没有用英文双引号包裹,这样的表创建出来之后,大家查询所有表,就会发现表名在我建立时表名写的是小写,但是展示的是大写的,这就是phoenix的一个有意思的地方,而像我这样没有把表名用英文的双引号包裹的,在后期操作的时候也不要用英文双引号包裹,其实区别在于包裹之后,再展示所有表,你会发现表名就和我们写的是同步的,建立时用小写那就是小写,大写就是大写,反之如用了双引号后期操作时就要包裹,总之遵循怎么定义的就怎么操作原则

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值