前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Phoenix快速入门系列(2) | 一文教你如何使用Phoenix

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

作者头像
不温卜火
发布2020-10-28 17:07:24
1.8K0
发布2020-10-28 17:07:24
举报
文章被收录于专栏:不温卜火

一. Phoenix 表操作

  • 1. 显示所有表
代码语言:javascript
复制
!tables

# 或者
!table
  • 2 创建表
代码语言:javascript
复制
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. char类型必须添加长度限制
  2. varchar 可以不用长度限制
  3. 主键映射到 HBase 中会成为 Rowkey. 如果有多个主键(联合主键), 会把多个主键的值拼成 rowkey
  4. 在 Phoenix 中, 默认会把表名,字段名等自动转换成大写. 如果要使用消息, 需要把他们用双引号括起来.
  • 3 插入记录
代码语言:javascript
复制
// 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);

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

  • 4. 查询记录
代码语言:javascript
复制
select * from US_POPULATION;

select * from us_population where state='NY';
  • 5. 删除记录
代码语言:javascript
复制
delete from us_population where state='NY';
  • 6. 删除表
代码语言:javascript
复制
drop table us_population;
  • 7. 退出命令行
代码语言:javascript
复制
! quit

二. Phoenix 表映射

1. Phoenix 表和 HBase 表的关系

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

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

  1. 视图映射
  2. 表映射

2 准备工作

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

  • 1. 启动 HBase shell
代码语言:javascript
复制
// 另开一台窗口启动Hbase
[bigdata@hadoop002 hbase]$ bin/hbase shell
  • 2. 创建表: test
代码语言:javascript
复制
create 'test', 'name', 'company'

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

3. 视图映射

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

代码语言:javascript
复制
// 1. 创建
create view "test"(empid varchar primary key,"name"."firstname" varchar,"name"."lastname" varchar,"company"."name" varchar,"company"."address" varchar);

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

4. 表映射

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

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

在 HBase 中创建表:

代码语言:javascript
复制
create 'test1', 'name', 'company'

在 Phoenix 中创建关联表:

代码语言:javascript
复制
create table "test1"(empid varchar primary key,"name"."firstname" varchar,"name"."lastname" varchar,"company"."name" varchar,"company"."address" varchar) column_encoded_bytes=0;

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

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

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

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

  本次的分享就到这里了

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/06/29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一. Phoenix 表操作
  • 二. Phoenix 表映射
    • 1. Phoenix 表和 HBase 表的关系
      • 2 准备工作
        • 3. 视图映射
          • 4. 表映射
            • 5. 视图映射和表映射的对比与总结
            相关产品与服务
            TDSQL MySQL 版
            TDSQL MySQL 版(TDSQL for MySQL)是腾讯打造的一款分布式数据库产品,具备强一致高可用、全球部署架构、分布式水平扩展、高性能、企业级安全等特性,同时提供智能 DBA、自动化运营、监控告警等配套设施,为客户提供完整的分布式数据库解决方案。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档