快速创建Doris集群并进行报表分析
Doris是一个基于MPP架构的高性能、实时的分析型数据库,以极速易用的特点被人们所熟知,仅需亚秒级响应时间即可返回海量数据下的查询结果,不仅可以支持高并发的点查询场景,也能支持高吞吐的复杂分析场景。本章节提供从零开始使用Doris操作指导:通过MySQL命令实现创建表,往表中插入数据,修改表,读取表数据,删除表中数据以及删除表的功能。
背景信息
假定这是一张记录用户访问某商品页面行为的表信息,使用MySQL客户端实现业务操作:
- 创建用户信息表example_tbl。
- 在用户信息中新增访问时间、城市、性别、停留时长、花费。
- 根据用户user_id查询用户的基本信息。
- 业务结束后,删除用户信息表。
表1 原始数据 user_id
date
city
age
sex
last_visit_date
cost
max_dwell_time
min_dwell_time
10000
2017-10-01
A
20
0
2017-10-01 06:00:00
20
10
10
10000
2017-10-01
A
20
0
2017-10-01 07:00:00
15
2
2
10001
2017-10-01
A
30
1
2017-10-01 17:05:45
2
22
22
10002
2017-10-02
B
20
1
2017-10-02 12:59:12
200
5
5
10003
2017-10-02
C
32
0
2017-10-02 11:20:00
30
11
11
10004
2017-10-01
D
35
0
2017-10-01 10:00:15
100
3
3
10004
2017-10-03
D
35
0
2017-10-03 10:20:22
11
6
6
- 字段含义说明。
表2 参数说明 参数
数据
说明
user_id
10000
用户id,每个用户唯一识别id。
date
2017-10-01
数据入库时间,精确到日期。
city
A
用户所在城市。
age
20
用户年龄。
sex
0
性别男(1代表女性)。
last_visit_date
2017-10-01 06:00:00
用户本次访问该页面的时间,精确到秒。
cost
20
用户本次访问产生的消费。
max_dwell_time
10
用户本次访问,驻留该页面的时间。
min_dwell_time
10
用户本次访问,驻留该页面的时间(冗余)。
准备工作
- 已注册华为账号并开通华为云,具体请参见注册华为账号并开通华为云,且在使用CloudTable前检查账号状态,账号不能处于欠费或冻结状态。
- 已创建虚拟私有云和子网,参见创建虚拟私有云和子网。
步骤一:购买Doris集群
- 登录表格存储服务控制台。
- 控制台左上角选择区域。
- 单击“集群管理”进入集群管理界面。
- 单击集群管理界面右上角的“购买集群”,进入购买集群页面配置相关参数(安全组规则配置端口请参见Doris安全规则组)。
- 单击“立即购买”,进入确认规格页面,确认无误,单击“完成”。
- 返回集群列表查看创建集群进度,当集群状态为“服务中”时,集群创建成功,详细参见创建Doris集群。
步骤二:准备弹性云服务器
- 购买弹性云服务器,登录ECS控制台。
- 控制台左上角选择区域。
- 单击左侧的服务列表,选择“计算 > 弹性云服务器 ECS”,进入弹性云服务器管理界面。
- 单击页面右上角“购买弹性云服务器”,进入配置界面。
- 配置弹性云服务器参数:基础配置、实例、操作系统、存储备份、网络、安全组、公网访问、云服务器管理、高级配置、购买量。
- 参数配置后,勾选“协议”并单击“立即购买”。ECS创建成功后会默认开机。
具体请参见弹性云服务“自定义购买ECS”章节。
步骤三:添加安全组
- 获取本地主机IP,按键盘中“win+R”,弹出运行界面。
- 在输入框中输入“cmd”,单击“确定”,进入cmd运行窗口,
- 在命令窗口输入“ipconfig”,单击“回车”,查询本机IP。
- 登录ECS服务控制台。
- 进入“弹性云服务器 ”列表页面,单击“弹性云服务名称 > 基本信息 > 安全组名称 > 入方向规则”,进入入方向规则页面。
- 单击页面右上角的“添加规则”,弹出“添加入方向规则”页面。
- 源地址中填写步骤3中获取的本地IP地址。单击“确定”安全组添加完成。
步骤四:安装MySQL客户端
用户在弹性云服务器里可以通过手动安装客户端的方法安装客户端。
- 使用SSH登录工具(如PuTTY)通过“弹性IP”远程登录到Linux弹性云服务器。
具体登录操作步骤请参见《弹性云服务器用户指南》中的“登录Linux弹性云服务器> SSH密码方式登录”。
- 将客户端传输到步骤二中创建的弹性云服务器。
- 登录后执行以下命令解压安装包。
cd <客户端安装包存放路径> tar xzvf 客户端压缩包名
- 进入bin目录。
cd mysql-5.7.22-linux-glibc2.12-x86_64/bin/
- 然后执行下面的命令连接Doris集群。
./mysql -uadmin -ppassword -h集群内网地址 -P9030
- 集群内网地址:集群详情页面中集群访问地址,这里替换成您自己购买的集群的访问地址(FE节点的访问地址,都可以访问集群)。
- password为您购买集群时设置的密码,如果有特殊符号,特殊符号前面需要\进行转义,如果密码整体用单引号括起来,则特殊字符不需要转义。
- 端口:FE上的mysql server端口9030。
步骤五:执行MySQL命令插入数据
- 创建一个数据库。
CREATE DATABASE demo;
- 创建数据表
- 使用数据库。
USE demo;
- 创建表。
CREATE TABLE IF NOT EXISTS demo.example_tbl ( `user_id` LARGEINT NOT NULL COMMENT "用户id", `date` DATE NOT NULL COMMENT "数据插入日期时间", `city` VARCHAR(20) COMMENT "用户所在城市", `age` SMALLINT COMMENT "用户年龄", `sex` TINYINT COMMENT "用户性别", `last_visit_date` DATETIME REPLACE DEFAULT "1970-01-01 00:00:00" COMMENT "用户最后一次访问时间", `cost` BIGINT SUM DEFAULT "0" COMMENT "用户总消费", `max_dwell_time` INT MAX DEFAULT "0" COMMENT "用户最大停留时间", `min_dwell_time` INT MIN DEFAULT "99999" COMMENT "用户最小停留时间" ) AGGREGATE KEY(`user_id`, `date`, `city`, `age`, `sex`) DISTRIBUTED BY HASH(`user_id`) BUCKETS 1 PROPERTIES ( "replication_allocation" = "tag.location.default: 3" );
- 使用数据库。
- 插入数据。
INSERT INTO demo.example_tbl (user_id,date,city,age,sex,last_visit_date,cost,max_dwell_time,min_dwell_time) VALUES('10000','2017-10-01','A','20','0','2017-10-01 07:00:00','35','10','2'),('10001','2017-10-01','A','30','1','2017-10-01 17:05:45','2','22','22'),('10002','2017-10-02','B','20','1','2017-10-02 12:59:12','200','5','5'),('10003','2017-10-02','C','32','0','2017-10-02 11:20:12','30','11','11'),('10004','2017-10-01','D','35','0','2017-10-01 10:00:15','100','3','3'),('10004','2017-10-03','D','35','0','2017-10-03 10:20:22','11','6','6');
- 查询数据。
- 我们上面完成了建表,输数据导入,下面我们就可以体验Doris的数据快速查询分析能力。
mysql> SELECT * FROM demo.example_tbl; +---------+------------+------+------+------+---------------------+------+----------------+----------------+ | user_id | date | city | age | sex | last_visit_date | cost | max_dwell_time | min_dwell_time | +---------+------------+------+------+------+---------------------+------+----------------+----------------+ | 10000 | 2017-10-01 | A | 20 | 0 | 2017-10-01 07:00:00 | 35 | 10 | 2 | | 10001 | 2017-10-01 | A | 30 | 1 | 2017-10-01 17:05:45 | 2 | 22 | 22 | | 10002 | 2017-10-02 | B | 20 | 1 | 2017-10-02 12:59:12 | 200 | 5 | 5 | | 10003 | 2017-10-02 | C | 32 | 0 | 2017-10-02 11:20:12 | 30 | 11 | 11 | | 10004 | 2017-10-01 | D | 35 | 0 | 2017-10-01 10:00:15 | 100 | 3 | 3 | | 10004 | 2017-10-03 | D | 35 | 0 | 2017-10-03 10:20:22 | 11 | 6 | 6 | +---------+------------+------+------+------+---------------------+------+----------------+----------------+ 6 rows in set (0.02 sec)
- 查看指定城市信息。
mysql> SELECT * FROM demo.example_tbl where city='B'; +---------+------------+------+------+------+---------------------+------+----------------+----------------+ | user_id | date | city | age | sex | last_visit_date | cost | max_dwell_time | min_dwell_time | +---------+------------+------+------+------+---------------------+------+----------------+----------------+ | 10002 | 2017-10-02 | B | 20 | 1 | 2017-10-02 12:59:12 | 200 | 5 | 5 | +---------+------------+------+------+------+---------------------+------+----------------+----------------+ 1 row in set (0.10 sec)
- 我们上面完成了建表,输数据导入,下面我们就可以体验Doris的数据快速查询分析能力。
- 删除数据。
- 删除指定行数据。
mysql> DELETE FROM demo.example_tbl WHERE user_id = 10003; Query OK, 0 rows affected (0.04 sec) {'label':'delete_77ed273a-a052-4d64-bac0-23916b698003', 'status':'VISIBLE', 'txnId':'39'}
- 删除表。
mysql> DROP TABLE demo.example_tbl; Query OK, 0 rows affected (0.01 sec)
- 删除指定行数据。