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