2021年大数据HBase(十):Apache Phoenix的基本入门操作

2021-10-11 16:32:04 浏览数 (1)

Apache Phoenix的基本入门操作

一、Phoenix的快速入门

1、需求

本次的小DEMO,我们沿用之前的订单数据集。我们将使用Phoenix来创建表,并进行数据增删改查操作。

2、创建表语法

在Phoenix中,我们可以使用类似于MySQL DDL的方式快速创建表。例如:

代码语言:javascript复制
CREATE TABLE IF NOT EXISTS 表名 (
         ROWKEY名称 数据类型 PRIMARY KEY
         列蔟名.列名1 数据类型 NOT NULL,
         列蔟名.列名2 数据类型 NOT NULL,
         列蔟名.列名3 数据类型
);

 例如:订单明细建表语句

代码语言:javascript复制
create table if not exists ORDER_DTL(
    ID varchar primary key,
    C1.STATUS varchar,
    C1.MONEY float,
    C1.PAY_WAY integer,
    C1.USER_ID varchar,
    C1.OPERATION_TIME varchar,
    C1.CATEGORY varchar
);

通过HBase的Web UI,我们可以看到Phoenix帮助我们自动在HBase中创建了一张名为 ORDER_DTL 的表格,可以看到里面添加了很多的协处理器。

同时,我们也看到这个表格默认只有一个Region,也就是没有分区的。

3、大小写思考

Phoenix在建表的时候, 默认会将小写字段或者表名或者列族名称自动转换为大写

思考我就想使用小写 不想用大写, 怎么办?  

只需要在需要小写文件, 添加双引号

代码语言:javascript复制
create table if not exists "order_info" (
"id"  varchar(50)  primary key ,
c1."status" varchar(10) ,
c1."money" float ,
c1."pay_way" integer ,
"c1".user_id varchar(20),
"c1".operation_time varchar(20),
c1.category  varchar(20)
);

注意:

  • 一旦使用小写,,在后期所有操作这个小写的内容,都需要使用双引号,建议使用大写
  • 单引号表示是字符串 双引号用于标识是小写的字段
  • 建表的时候, 主键字段, 不能带列族

二、Apache Phoenix的基本使用

1、查看所有的表

代码语言:javascript复制
格式: !table

2、查看某一个表

代码语言:javascript复制
格式: !desc 表名

3、删除表

代码语言:javascript复制
格式: drop table 表名

4、插入数据操作

在Phoenix中,插入并不是使用insert来实现的。而是 「upsert 」命令。它的功能为insert update,与HBase中的put相对应。如果不存在则插入,否则更新。列表是可选的,如果不存在,值将按模式中声明的顺序映射到列。这些值必须计算为常量。

 注意: 主键是不存在列族的, 在设置的时候, 不要给主键前面加列族

代码语言:javascript复制
格式: upsert into 表名 (列族.列名1,列族.列名2 ..... ) values(值1,值2....)
代码语言:javascript复制
 upsert into order_info (id,c1.status,c1.money) values('000001','以提交',4070);
 
 upsert into order_info values('000001','以提交',4070,1,'4944191','2021-07-14 12:09:16','手机');

5、查询数据操作

查询数据与之前的SQL基本一致的

注意: Phoenix不支持多表查询操作, 只能进行简单的单表查询工作

6、更新数据

与添加数据的语法是一致的

代码语言:javascript复制
upsert into order_info values('000001','未支付',4070,1,'4944191','2021-07-14 12:09:16','手机');

7、删除数据

与标准SQL一样,Phoenix也是使用delete语句来实现数据的删除

代码语言:javascript复制
DELETE FROM ORDER_DTL WHERE "id" = '000001';

8、分页查询操作 

limit 显示多少条 offset 从第几条开始

代码语言:javascript复制
select * from order_info limit 5 offset 5;

9、更多语法

http://phoenix.apache.org/language/index.html