Phoenix快速入门系列(2) | 一文教你如何使用Phoenix

举报
不温卜火 发表于 2021/01/07 18:18:28 2021/01/07
【摘要】   大家好,我是不温卜火,是一名计算机学院大数据专业大二的学生,昵称来源于成语—不温不火,本意是希望自己性情温和。作为一名互联网行业的小白,博主写博客一方面是为了记录自己的学习过程,另一方面是总结自己所犯的错误希望能够帮助到很多和自己一样处于起步阶段的萌新。但由于水平有限,博客中难免会有一些错误出现,有纰漏之处恳请各位大佬不吝赐教!暂时只有csdn这一个平台,博客...

  大家好,我是不温卜火,是一名计算机学院大数据专业大二的学生,昵称来源于成语—不温不火,本意是希望自己性情温和。作为一名互联网行业的小白,博主写博客一方面是为了记录自己的学习过程,另一方面是总结自己所犯的错误希望能够帮助到很多和自己一样处于起步阶段的萌新。但由于水平有限,博客中难免会有一些错误出现,有纰漏之处恳请各位大佬不吝赐教!暂时只有csdn这一个平台,博客主页:https://buwenbuhuo.blog.csdn.net/

  此篇为大家带来的是一文教你如何使用Phoenix。


20

一. Phoenix 表操作

  • 1. 显示所有表
!tables

# 或者
!table

  
 
  • 1
  • 2
  • 3
  • 4

1

  • 2 创建表
CREATE TABLE IF NOT EXISTS us_population ( state CHAR(2) NOT NULL, city VARCHAR NOT NULL, population BIGINT CONSTRAINT my_pk PRIMARY KEY (state, city));

  
 
  • 1
  • 2
  • 3
  • 4
  • 5

说明:

  1. char类型必须添加长度限制
  2. varchar 可以不用长度限制
  3. 主键映射到 HBase 中会成为 Rowkey. 如果有多个主键(联合主键), 会把多个主键的值拼成 rowkey
  4. 在 Phoenix 中, 默认会把表名,字段名等自动转换成大写. 如果要使用消息, 需要把他们用双引号括起来.

2

  • 3 插入记录
// Phoenix内不支持inset插入,要不然会出错
insert into us_population values('NY','NewYork',8143197);

upsert into us_population values('NY','NewYork',8143197);
upsert into us_population values('CA','Los Angeles',3844829);
upsert into us_population values('IL','Chicago',2842518);


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

3
4

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

  • 4. 查询记录
select * from US_POPULATION;

select * from us_population where state='NY';

  
 
  • 1
  • 2
  • 3

5

  • 5. 删除记录
delete from us_population where state='NY';

  
 
  • 1

6

  • 6. 删除表
drop table us_population;

  
 
  • 1
  • 7. 退出命令行
! quit

  
 
  • 1

二. Phoenix 表映射

1. Phoenix 表和 HBase 表的关系

  默认情况下, 直接在 HBase 中创建的表通过 Phoenix 是查不到的.

7
8

如果要在 Phoenix 中操作直接在 HBase 中创建的表,则需要在 Phoenix 中进行表的映射。
映射方式有两种:

  1. 视图映射
  2. 表映射

2 准备工作

  在 HBase 中创建表: test, 两个列簇name、company.
9

  • 1. 启动 HBase shell
// 另开一台窗口启动Hbase
[bigdata@hadoop002 hbase]$ bin/hbase shell

  
 
  • 1
  • 2
  • 2. 创建表: test
create 'test', 'name', 'company'

  
 
  • 1

  在 Phoenix 中是看不到这个表的:
10

3. 视图映射

  Phoenix 创建的视图是只读的, 所以只能用来查询, 无法通过视图对数据进行修改等操作.

// 1. 创建
create view "test"(empid varchar primary key,"name"."firstname" varchar,"name"."lastname" varchar,"company"."name" varchar,"company"."address" varchar);

// 2. 查找
select * from "test";

  
 
  • 1
  • 2
  • 3
  • 4
  • 5

11

4. 表映射

  使用 Phoenix创建对 HBase 的表映射,有两种方法:

  1. 当 HBase 中已经存在表时,可以以类似创建视图的方式创建关联表,只需要将create view 改为 create table 即可。

在 HBase 中创建表:

create 'test1', 'name', 'company'

  
 
  • 1

在 Phoenix 中创建关联表:

create table "test1"(empid varchar primary key,"name"."firstname" varchar,"name"."lastname" varchar,"company"."name" varchar,"company"."address" varchar) column_encoded_bytes=0;

  
 
  • 1

说明: 添加这个参数之后, 在 HBase 中添加的数据在 Phoenix 中也可以查询到. 否则 HBase 中添加的数据在Phoenix 中查询不到.

  1. 当 HBase 中不存在表时,可以直接使用 create table 指令创建需要的表,系统将会自动在 Phoenix 和 HBase 中创建 person_infomation 的表,并会根据指令内的参数对表结构进行初始化。

5. 视图映射和表映射的对比与总结

  相比于直接创建映射表,视图的查询效率会低, 原因是:创建映射表的时候,Phoenix 会在表中创建一些空的键值对,这些空键值对的存在可以用来提高查询效率。
  使用create table创建的关联表,如果对表进行了修改,源数据也会改变,同时如果关联表被删除,源表也会被删除。但是视图就不会,如果删除视图,源数据不会发生改变。

  本次的分享就到这里了,


11

  好书不厌读百回,熟读课思子自知。而我想要成为全场最靓的仔,就必须坚持通过学习来获取更多知识,用知识改变命运,用博客见证成长,用行动证明我在努力。
  如果我的博客对你有帮助、如果你喜欢我的博客内容,请“点赞” “评论”“收藏”一键三连哦!听说点赞的人运气不会太差,每一天都会元气满满呦!如果实在要白嫖的话,那祝你开心每一天,欢迎常来我博客看看。
  码字不易,大家的支持就是我坚持下去的动力。点赞后不要忘了关注我哦!

13
12

文章来源: buwenbuhuo.blog.csdn.net,作者:不温卜火,版权归原作者所有,如需转载,请联系作者。

原文链接:buwenbuhuo.blog.csdn.net/article/details/106314547

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。