(2)Phoenix的基本使用

显示所有表

!table 或 !tables

创建表

CREATE TABLE US_POPULATION (
	STATE CHAR(2) NOT NULL,
	CITY VARCHAR NOT NULL,
	POPULATION BIGINT,
	CONSTRAINT MY_PK PRIMARY KEY (STATE,CITY)
) ;

在phoenix中,默认情况下,表名等会自动转换为大写,若要小写,使用双引号,如"us_population"。
对于char类型必须指定长度,varchar可以不用长度限制
主键映射到hhbase中成为rowKey,如果有多个主键(联合主键),会将多个主键的值拼成rowKey

插入记录

采用upsert,既能插入又能更新

upsert into us_population values('NY','NewYork',8143197);

upset可以看成是update和insert的结合体.

查询

select * from us_population ;
select * from us_population where state='NY';

删除记录

delete from us_population wherestate='NY';

删除表

drop table us_population;

退出命令行

!quit

phoenix表映射

Phoenix和Hbase表的关系:

直接在hbase中创建的表,通过phoenix是查看不到的。,US_POPULATION是在phoenix中直接创建的,而kylin相关表是在hbase中直接创建的,在phoenix中是查看不到kylin等表的。如果要在phoenix中操作直接在hbase中创建的表,则需要在phoenix中进行表的映射。映射方式有两种:视图映射和表映射
Hbase命令行中创建表test
Hbase 中test的表结构如下,两个列簇name、company.
Rowkey name company
empid firstname lastname name address

Rowkeynamecompany
empidfirstnamelastnamenameaddress

启动Hbase shell
[atguigu@hadoop101 ~]$ /opt/module/hbase-1.3.1/bin/hbase shell

创建Hbase表test
hbase(main):001:0> create ‘test’,‘name’,‘company’

创建表,如下图:
在这里插入图片描述
2.3.3 视图映射
Phoenix创建的视图是只读的,所以只能用来做查询,无法通过视图对源数据进行修改等操作。
在phoenix中创建视图test表
0: jdbc:phoenix:hadoop101,hadoop102,hadoop103> create view “test”(empid varchar primary key,“name”.“firstname” varchar,“name”.“lastname” varchar,“company”.“name” varchar,“company”.“address” varchar);

删除视图
0: jdbc:phoenix:hadoop101,hadoop102,hadoop103> drop view “test”;
2.3.3 表映射
使用Apache Phoenix创建对HBase的表映射,有两种方法:
1) 当HBase中已经存在表时,可以以类似创建视图的方式创建关联表,只需要将create view改为create table即可。
0: jdbc:phoenix:hadoop101,hadoop102,hadoop103> create table “test”(empid varchar primary key,“name”.“firstname” varchar,“name”.“lastname” varchar,“company”.“name” varchar,“company”.“address” varchar);

2) 当HBase中不存在表时,可以直接使用create table指令创建需要的表,系统将会自动在Phoenix和HBase中创建person_infomation的表,并会根据指令内的参数对表结构进行初始化。
0: jdbc:phoenix:hadoop101,hadoop102,hadoop103> create table “test”(empid varchar primary key,“name”.“firstname” varchar,“name”.“lastname” varchar,“company”.“name” varchar,“company”.“address” varchar) column_encoded_bytes=0;

2.3.4 使用spark对phoenix的读写
在这里插入图片描述
在Phoenix中查看数据
select * from STOCK_SYMBOL
如下显示:
在这里插入图片描述
在Hbase中查看数据
scan “STOCK_SYMBOL”
在这里插入图片描述
更多使用详情,请参考http://phoenix.apache.org/phoenix_spark.html
2.3.5 视图映射和表映射的对比与总结:
相比于直接创建映射表,视图的查询效率会低,原因是:创建映射表的时候,Phoenix会在表中创建一些空的键值对,这些空键值对的存在可以用来提高查询效率。
使用create table创建的关联表,如果对表进行了修改,源数据也会改变,同时如果关联表被删除,源表也会被删除。但是视图就不会,如果删除视图,源数据不会发生改变。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值