
# 快速创建StarRocks集群并进行实时数据分析
StarRocks是新一代极速全场景MPP(Massively Parallel Processing)数据库。StarRocks的愿景是能够让用户的数据分析变得更加简单和敏捷。用户无需经过复杂的预处理，就可以用StarRocks来支持多种数据分析场景的极速分析。
#### 操作场景
假设某电商平台，需要实时分析用户订单行为，包括：
- 记录用户订单数据（用户ID、订单时间、金额、商品类别）。
- 快速查询特定时间段内的订单金额、热门商品类别。
  表1原始数据 
  | user_id | order_time          | amount | category    |
  |:---|:---|:---|:---|
  | 101     | 2025-02-15 10:00:00 | 50.99  | Electronics |
  | 102     | 2025-02-18 10:30:00 | 99.99  | Clothing    |
  | 103     | 2025-02-28 17:30:06 | 159.99 | Cosmetics   |
  | 104     | 2025-02-17 19:30:06 | 20.00  | Shoes       |
  | 105     | 2025-01-01 11:30:06 | 99.00  | Drinks      |
  | 106     | 2025-01-20 19:30:06 | 199.00 | Furniture   |
  | 107     | 2025-01-03 09:30:06 | 50.99  | Kitchen     |
     
  
 
#### 准备工作
- 已注册华为账号并开通华为云，具体请参见[注册华为账号并开通华为云](https://support.huaweicloud.com/usermanual-account/account_id_001.html)，且在使用CloudTable前检查账号状态，账号不能处于欠费或冻结状态。
- 已创建虚拟私有云和子网，参见创建[虚拟私有云和子网](https://support.huaweicloud.com/usermanual-vpc/zh-cn_topic_0013935842.html)。
 
#### 步骤一：购买StarRocks集群
1. 登录[表格存储服务控制台](https://console.huaweicloud.com/cloudtable)。
2. 控制台左上角选择区域。
3. 单击"集群管理"进入集群管理界面。
4. 单击集群管理界面右上角的"购买集群"，进入购买集群页面配置相关参数（安全组规则配置端口请参见[表2]）。
5. 单击"立即购买"，进入确认规格页面，确认无误，单击"完成"。
6. 返回集群列表查看创建集群进度，当集群状态为"服务中"时，集群创建成功。
    表2StarRocks安全组规则 
   | 方向  | 策略 | 协议端口/范围 | 类型        | 目的/源地址             | 用途                  |
   |:---|:---|:---|:---|:---|:---|
   | 出方向 | 允许 | 全部      | IPv4/IPv6 | 0.0.0.0/0          | 出方向放行。              |
   | 入方向 | 允许 | 9030    | IPv4/IPv6 | StarRocks集群所在的安全组。 | FE上的mysql server端口。 |
   | 入方向 | 允许 | 8030    | IPv4/IPv6 | StarRocks集群所在的安全组。 | FE上的http server端口。  |
   | 入方向 | 允许 | 8040    | IPv4/IPv6 | StarRocks集群所在的安全组。 | BE上的http server的端口。 |
   | 入方向 | 允许 | 8050    | IPv4/IPv6 | StarRocks集群所在的安全组。 | FE上的https server端口  |
      
   
 
#### 步骤二：准备弹性云服务
1. 购买弹性云服务器，登录[ECS控制台](https://console.huaweicloud.com/ecm/?#/ecs/manager/vmList)。
2. 控制台左上角选择区域。
3. 单击页面右上角"购买弹性云服务器"，进入配置界面。
4. 配置弹性云服务器参数：基础配置、实例、操作系统、存储备份、网络、安全组、公网访问、云服务器管理、高级配置、购买量。 VPC、子网、安全组与集群保持一致。
   
5. 参数配置后，勾选"协议"并单击"立即购买"。ECS创建成功后会默认开机。 具体请参见弹性云服务"[自定义购买ECS](https://support.huaweicloud.com/usermanual-ecs/ecs_03_7002.html#section5)"章节。
   
 
#### 步骤三：添加安全组
在ECS安全组中添加本地主机的IP地址。
1. 获取本地主机IP，按键盘中"win+R"，弹出运行界面。
2. 在输入框中输入"cmd"，单击"确定"，进入cmd运行窗口，
3. 在命令窗口输入"ipconfig"，单击"回车"，查询本机IP。
4. 购买弹性云服务器，登录[ECS控制台](https://console.huaweicloud.com/ecm/?#/ecs/manager/vmList)。
5. 进入"弹性云服务器 "列表页面，单击"弹性云服务名称 \> 基本信息 \> 安全组名称 \> 入方向规则"，进入入方向规则页面。
6. 单击页面右上角的"添加规则"，弹出"添加入方向规则"页面。
7. 源地址中填写步骤[3](https://support.huaweicloud.com/qs-cloudtable/cloudtable_06_0001.html#cloudtable_06_0001__li16591028135215)中获取的本地IP地址。单击"确定"安全组添加完成。
 
#### 步骤四：手动安装MySQL客户端
1. 下载[MySQL客户端](https://downloads.mysql.com/archives/community/)，根据实际情况选择版本。
2. 使用SSH登录工具，通过弹性IP远程登录到Linux弹性云服务器。具体登录操作步骤请参见弹性云服务器《用户指南》中的" [SSH密码方式登录](https://support.huaweicloud.com/usermanual-ecs/zh-cn_topic_0017955633.html)"。
3. 进入SSH工具的根目录。 
   ```
   cd /
   ```
   
   
4. 在根目录中新建一个文件夹，将[1]中下载的安装包上传到新建文件夹中。
   
   ```
   mkdir 文件夹名
   ```
   
   
5. 登录后执行以下命令解压安装包。 
   ```
   cd <客户端安装包存放路径>
   tar -xzvf 客户端压缩包名
   ```
   ![](https://support.huaweicloud.com/qs-cloudtable/public_sys-resources/note_3.0-zh-cn.png)
   "\<客户端安装包存放路径\>"请替换为实际的客户端存放路径。
   
   
6. 进入bin目录。 
   ```
   cd mysql-5.7.22-linux-glibc2.12-x86_64/bin/
   ```
   
   
7. 然后执行下面的命令连接StarRocks集群。 
   ```
   ./mysql -uadmin -ppassword -h集群内网地址 -P9030
   ```
   ![](https://support.huaweicloud.com/qs-cloudtable/public_sys-resources/note_3.0-zh-cn.png)
   - 集群内网地址：集群详情页面中集群访问地址，这里替换成您自己购买的集群的访问地址（FE节点的访问地址，都可以访问集群）。
   
   - ***password***为您购买集群时设置的密码，如果有特殊符号，特殊符号前面需要\\进行转义，如果密码整体用单引号括起来，则特殊字符不需要转义。
   
   - 端口：FE上的mysql server端口。
    
   
   
 
#### 步骤五：在MySQL客户端创建数据表进行数据分析
1. 创建数据库。 
   ```
   CREATE DATABASE ecommerce;
   ```
   
   
2. 使用数据库。 
   ```
   USE ecommerce;
   ```
   
   
3. 创建订单表user_orders（按天分区，按用户ID分桶）。 
   ```
   CREATE TABLE user_orders (
       user_id BIGINT,
       order_time DATETIME,
       amount DECIMAL(10,2),
       category VARCHAR(50)
   )
   PARTITION BY RANGE(order_time) (
       PARTITION p202301 VALUES LESS THAN ('2025-02-01'),
       PARTITION p202302 VALUES LESS THAN ('2025-03-01')
   )
   DISTRIBUTED BY HASH(user_id) BUCKETS 8;
   ```
   
   
4. 插入数据。 
   ```
   INSERT INTO user_orders (user_id,order_time,amount,category) VALUES('101','2025-02-15 10:00:00','50.99','Electronics');
   INSERT INTO user_orders (user_id,order_time,amount,category) VALUES('102','2025-02-18 10:30:00','99.99','clothing');
   INSERT INTO user_orders (user_id,order_time,amount,category) VALUES('103','2025-02-28 17:30:06','159.99','Cosmetics');
   INSERT INTO user_orders (user_id,order_time,amount,category) VALUES('104','2025-02-17 19:30:06','20.00','Shoes');
   INSERT INTO user_orders (user_id,order_time,amount,category) VALUES('105','2025-01-01 11:30:06','99.00','Drinks');
   INSERT INTO user_orders (user_id,order_time,amount,category) VALUES('106','2025-01-20 19:30:06','199.00','Furniture');
   INSERT INTO user_orders (user_id,order_time,amount,category) VALUES('107','2025-01-03 09:30:06','150.99','Kitchen');
   ```
   
   
5. 简单聚合查询2月订单总金额。 
   ```
   SELECT 
       DATE(order_time) AS day,
       SUM(amount) AS total_amount,
       category
   FROM user_orders
   WHERE order_time >= '2025-02-01'
   GROUP BY day, category
   ORDER BY total_amount DESC;
   ```
   结果示例：
   ```
   +------------+--------------+-------------+
   | day        | total_amount | category    |
   +------------+--------------+-------------+
   | 2025-02-28 |       159.99 | Cosmetics   |
   | 2025-02-18 |        99.99 | clothing    |
   | 2025-02-15 |        50.99 | Electronics |
   | 2025-02-17 |        20.00 | Shoes       |
   +------------+--------------+-------------+
   4 rows in set (0.16 sec)
   ```
   
   
 
