体验 Serverless StarRocks × Paimon (DLF) 查询 TPC-DS 标准库性能

简介: 本文介绍如何通过共享TPC-DS样例数据集,创建并绑定DLF Catalog到StarRocks实例,实现高效数据查询与分析。内容涵盖RAM用户授权、外部Catalog连接、性能测试(如TPC-DS Query 3)、数据写入内外表、物化视图构建数仓DWD-ADS层,以及通过Quick BI进行可视化报表展示的完整流程,助力快速搭建湖仓一体架构。

前提条件


创建 StarRocks 实例并绑定 DLF Catalog

DLF的访问控制是RAM级别的。默认情况下,所有StarRocks用户均不具备DLF的任何权限,因此您必须创建一个和RAM用户同名的内部用户,并为其授予相应的权限。

  1. 创建RAM用户。
  1. 使用阿里云账号或RAM管理员登录RAM控制台
  2. 创建一个新的RAM用户或选择一个已有RAM用户。创建RAM用户,请参见创建RAM用户并授权
  3. RAM 访问控制-身份管理-用户-添加权限中给该 RAM 角色授权 AliyunDLFFullAccessAliyunOSSReadOnlyAccess
  1. 在DLF中为该RAM用户授权以访问共享资源。
  1. 登录数据湖构建控制台
  2. 切换到系统和安全-访问控制-角色,授予上一步所选用户访问权限:super_administrator 或 admin。
    例如:RAM用户的用户名为emr,授予该用户权限。注:如找不到该用户,请前往系统和安全-访问控制-用户,点击同步后再操作。

  1. 创建Serverless StarRocks 3.3.8及以上版本的实例。Serverless StarRocks服务与DLF位于同一VPC下。如已创建低版本的实例,请参见 版本升级。如未创建,请参见创建实例,并绑定已创建的TPC-DS 标准样例数据目录和 RAM 角色。

创建StarRocks账号与授权(可选)

如您使用的是已有的 StarRocks 实例或在创建时没有绑定 DLF,需使用 StarRocks admin RAM 账号创建一个与先前创建的 RAM同名的用户。赋予该用户创建External Catalog以及查看所有Catalog的权限,并将该用户与RAM用户关联。

  1. 如您的 StarRocks 实例 admin 尚未绑定 RAM 用户,可在安全中心-用户管理中关联 RAM 用户。
  2. 使用 StarRocks admin 的RAM账号 登录EMR Serverless StarRocks控制台
  3. 实例列表页面,单击已创建实例操作列的连接实例,详情请参见通过EMR StarRocks Manager连接StarRocks实例
  4. 指定用户名为admin或StarRocks超级管理员,连接StarRocks实例。实例连接常见问题:查看地域、用户名是否正确。
  5. 在EMR StarRocks Manager页面的左侧菜单栏,选择安全中心 > 用户管理,单击添加用户
  6. 在弹出的对话框中,配置以下信息,单击确定
  1. 用户来源:选择RAM用户
  2. 用户名:选择 DLF 中授权的RAM用户。
  3. 密码:自定义。
  4. 角色:默认public。
  1. 添加用户成功后,为该用户授权。
  1. 用户管理页面,单击目标用户操作列的授权
  2. 权限管理页签,单击添加权限
  3. 添加权限面板中,配置以下参数,单击确定
  • 资源:选择相应资源。
  • 权限配置:勾选需要授权的权限。
  1. 通过 SQL 创建并绑定 DLF 中的 Catalog:
    说明这里仅用于建立与DLF Catalog的映射连接,创建或删除Catalog仅影响映射关系,不会对DLF中的实际数据产生影响。
  2. 使用配置好的 RAM用户登录StarRocks Manager,创建或查看Catalog,即可访问到DLF外表。
  1. SQL Editor查询列表页面,单击 图标,创建SQL查询。
  2. 输入以下SQL,单击运行,创建External Catalog。
CREATE EXTERNAL CATALOG `dlf_samples`
PROPERTIES (
'type' = 'paimon',
'uri' = 'http://cn-hangzhou-vpc.dlf.aliyuncs.com',
'paimon.catalog.type' = 'rest',
'paimon.catalog.warehouse' = 'dlf_samples',
'token.provider' = 'dlf'
);


参数说明如下。

参数

说明

示例

type

必填,StarRocks的Catalog类型,DLF当前只支持paimon

paimon

uri

必填,格式为http://[region-id]-vpc.dlf.aliyuncs.com

http://cn-hangzhou-vpc.dlf.aliyuncs.com

paimon.catalog.type

必填,Paimon的Catalog类型,DLF场景填写固定值rest

rest

paimon.catalog.warehouse

必填,Paimon的Catalog名称,可从DLF控制台上获取。

dlf_samples

token.provider

必填,Rest服务提供者,DLF固定填dlf

dlf

说明此处StarRocks Manager中授权数据库与授权权限的内容只包含StarRocks内表。要想修改DLF数据目录的访问权限,只能在数据湖构建控制台修改对应同名RAM用户的权限。

  1. (可选)验证用户是否关联成功。

因上一步操作有10~20秒的延迟,您可使用该用户登录StarRocks Manager,在SQL Editor查询列表页面,单击 图标,创建SQL查询。通过SQL Editor执行以下命令,查看当前用户关联的Ram User ID,不为空时说明关联成功。

show property;


测试TPC-DS 标准样例数据库

完成上述步骤后,使用 与DLF关联的RAM账号 登录EMR Serverless StarRocks控制台

  1. 实例列表页面,单击已创建实例操作列的连接实例,详情请参见通过EMR StarRocks Manager连接StarRocks实例
  2. 指定用户名为admin或StarRocks超级管理员,连接StarRocks实例。实例连接常见问题:查看地域、用户名是否正确。
  3. StarRocks Manager-元数据管理中可查看绑定的 catalog。

通过共享样例数据集,可快速验证数据处理性能、优化查询效率或进行功能验证。

数据库名

Scale Factor (SF)

数据量级

适用场景

tpcds_paimon_sf1

1

~1 GB

快速验证、开发测试

tpcds_paimon_sf2

2

~2 GB

中等测试、学习

tpcds_paimon_sf10

10

~10 GB

性能测试、压测

tpcds_paimon_sf100

100

~100 GB

生产级 benchmark、性能对比


使用 TPC-DS Query 3 作为性能测试示例、tpcds_paimon_sf100(约 100 GB)的 Paimon 表做性能压测。TPC-DS 是业界标准的决策支持基准,其查询设计复杂、贴近真实分析场景。

Query 3 是 TPC-DS 中经典的 多表关联 + 聚合 + 过滤 + 排序 查询,能有效测试:

  • 大表 Join 性能(customer, customer_address, store_sales
  • 分区裁剪(store_sales 按日期分区)
  • 聚合与排序效率
  • I/O 与内存压力

找出过去两年中,在特定州(如 'IL', 'IN', 'KS')购买过商品的客户,按年份和城市统计购买人数,并限制结果前 100 行。

  1. 在 StarRocks Manager 中的 SQL Editor查询列表页面,单击 图标,创建SQL查询。
  2. 输入以下SQL,单击运行,查询结果。
-- TPC-DS Query 3: 客户地域分布分析(性能压测)
SELECT 
    dt.d_year,
    ca.ca_state,
    ca.ca_city,
    COUNT(*) AS customer_cnt
FROM 
    dlf_samples.tpcds_paimon_sf100.customer c
JOIN 
    dlf_samples.tpcds_paimon_sf100.customer_address ca 
    ON c.c_current_addr_sk = ca.ca_address_sk
JOIN 
    dlf_samples.tpcds_paimon_sf100.store_sales ss 
    ON c.c_customer_sk = ss.ss_customer_sk
JOIN 
    dlf_samples.tpcds_paimon_sf100.date_dim dt 
    ON ss.ss_sold_date_sk = dt.d_date_sk
WHERE 
    ca.ca_state IN ('IL', 'IN', 'KS')  -- 选择高数据量的州
    AND dt.d_year BETWEEN 2000 AND 2002  -- 覆盖多个分区
GROUP BY 
    dt.d_year,
    ca.ca_state,
    ca.ca_city
ORDER BY 
    dt.d_year,
    ca.ca_state,
    ca.ca_city
LIMIT 100;


实验结果表明,EMR Serverless StarRocks 查询100 GB 大表 Join 仅需要 6.2 秒!

将数据写入 StarRocks 内表

  1. 创建 StarRocks 内表:
CREATE DATABASE IF NOT EXISTS sr_demo_db;
CREATE TABLE IF NOT EXISTS sr_demo_db.customer_geo_summary (
    ca_state STRING,
    ca_city STRING,
    d_year INT,
    customer_cnt BIGINT,
    update_time DATETIME
)
PRIMARY KEY (ca_state, ca_city, d_year)
PARTITION BY (d_year)
DISTRIBUTED BY HASH(ca_city) BUCKETS 8;
  1. 执行 INSERT,将数据从 Paimon 外表写入 StarRocks 内表
INSERT INTO sr_demo_db.customer_geo_summary
SELECT 
    ca.ca_state,
    ca.ca_city,
    COUNT(*) AS customer_cnt,
    NOW() AS update_time,
    dt.d_year
FROM 
    dlf_samples.tpcds_paimon_sf100.customer c
JOIN 
    dlf_samples.tpcds_paimon_sf100.customer_address ca 
    ON c.c_current_addr_sk = ca.ca_address_sk
JOIN 
    dlf_samples.tpcds_paimon_sf100.store_sales ss 
    ON c.c_customer_sk = ss.ss_customer_sk
JOIN 
    dlf_samples.tpcds_paimon_sf100.date_dim dt 
    ON ss.ss_sold_date_sk = dt.d_date_sk
WHERE 
    ca.ca_state IN ('IL', 'IN', 'KS')
    AND dt.d_year BETWEEN 2000 AND 2002
    AND ca.ca_state IS NOT NULL
    AND ca.ca_city IS NOT NULL
    AND dt.d_year IS NOT NULL
GROUP BY 
    ca.ca_state,
    ca.ca_city,
    dt.d_year;
  1. (可选)验证数据
SELECT * FROM sr_demo_db.customer_geo_summary LIMIT 10;
SELECT COUNT(*) FROM sr_demo_db.customer_geo_summary;

使用EMR StarRocks物化视图,自动化构建数仓DWD-ADS

  1. 创建DWD层EMR-StarRocks物化视图,每隔1小时刷新一次。
--- 使用StarRocks物化视图,自动化构建数据仓库DWD层
--- 说明:此处为了简化逻辑,仅直接将ODS层数据(即customer_geo_summary)转换为DWD层。
-- 删除已存在的物化视图(如果存在)
DROP MATERIALIZED VIEW IF EXISTS sr_demo_db.dwd_mv_customer_geo_summary;
-- 创建新的物化视图
CREATE MATERIALIZED VIEW IF NOT EXISTS sr_demo_db.dwd_mv_customer_geo_summary
DISTRIBUTED BY HASH(ca_city) BUCKETS 8
REFRESH ASYNC EVERY(INTERVAL 1 HOUR)
AS
SELECT 
    ca_state,
    ca_city,
    customer_cnt,
    update_time,
    d_year
FROM sr_demo_db.customer_geo_summary;
  1. 校验上面步骤的数据加工结果
-- 校验上面步骤的数据加工结果
SELECT * FROM (
    SELECT
        COUNT(1) AS cnt,
        'dwd_mv_customer_geo_summary' AS tb
    FROM
        sr_demo_db.dwd_mv_customer_geo_summary
) t;

  1. 使用EMR-StarRocks物化视图,自动化构建ADS。(以下 3 条 SQL 分开执行)
--- 使用StarRocks物化视图,自动化构建数据仓库ADS层
-- 1. 创建 ADS_MV_CUSTOMER_RETENTION (客户年度汇总)
DROP MATERIALIZED VIEW IF EXISTS sr_demo_db.ADS_MV_CUSTOMER_RETENTION;
CREATE MATERIALIZED VIEW IF NOT EXISTS sr_demo_db.ADS_MV_CUSTOMER_RETENTION
DISTRIBUTED BY HASH(d_year) BUCKETS 4
REFRESH ASYNC EVERY(INTERVAL 1 HOUR)
AS
SELECT
    d_year,
    SUM(customer_cnt) AS total_customers
FROM sr_demo_db.dwd_mv_customer_geo_summary
GROUP BY d_year;
-- 2. ADS_MV_CUSTOMER_GEOGRAPHIC_DISTRIBUTION (客户地理分布 - 按州)
DROP MATERIALIZED VIEW IF EXISTS sr_demo_db.ADS_MV_CUSTOMER_GEOGRAPHIC_DISTRIBUTION;
CREATE MATERIALIZED VIEW IF NOT EXISTS sr_demo_db.ADS_MV_CUSTOMER_GEOGRAPHIC_DISTRIBUTION
DISTRIBUTED BY HASH(ca_state) BUCKETS 8
REFRESH ASYNC EVERY(INTERVAL 1 HOUR)
AS
SELECT
    ca_state,
    SUM(customer_cnt) AS total_customers
FROM sr_demo_db.dwd_mv_customer_geo_summary
GROUP BY ca_state;
-- 3. ADS_MV_CUSTOMER_CITY_DISTRIBUTION (城市分布详情)
DROP MATERIALIZED VIEW IF EXISTS sr_demo_db.ADS_MV_CUSTOMER_CITY_DISTRIBUTION;
CREATE MATERIALIZED VIEW IF NOT EXISTS sr_demo_db.ADS_MV_CUSTOMER_CITY_DISTRIBUTION
DISTRIBUTED BY HASH(ca_city) BUCKETS 8
REFRESH ASYNC EVERY(INTERVAL 1 HOUR)
AS
SELECT
    ca_city,
    SUM(customer_cnt) AS total_customers
FROM sr_demo_db.dwd_mv_customer_geo_summary
GROUP BY ca_city;
  1. 校验 ADS 层物化视图的数据加工结果
-- 校验上面步骤的数据加工结果
SELECT * FROM (
    SELECT COUNT(1) AS row_count, 'ADS_MV_CUSTOMER_RETENTION' AS tb
    FROM sr_demo_db.ADS_MV_CUSTOMER_RETENTION
    UNION ALL
    SELECT COUNT(1) AS row_count, 'ADS_MV_CUSTOMER_GEOGRAPHIC_DISTRIBUTION' AS tb
    FROM sr_demo_db.ADS_MV_CUSTOMER_GEOGRAPHIC_DISTRIBUTION
    UNION ALL
    SELECT COUNT(1) AS row_count, 'ADS_MV_CUSTOMER_CITY_DISTRIBUTION' AS tb
    FROM sr_demo_db.ADS_MV_CUSTOMER_CITY_DISTRIBUTION
) t;

(可选)通过Quick BI进行报表分析和展示

通过Quick BI可以直接查询StarRocks中的数据,进行报表页面展示。

  1. 打开Quick BI控制台:https://bi.aliyun.com/workspace/dashboard
  2. 配置好StarRocks数据源。参考:通过Quick BI连接StarRocks实例
  3. 创建数据集(Dataset)。点击 【数据集】> 【新建数据集】> 选择刚创建的数据源。
  1. 数据集 1:客户地理分布(按州)ADS_客户州分布
SELECT 
    ca_state AS 州,
    total_customers AS 客户数
FROM sr_demo_db.ADS_MV_CUSTOMER_GEOGRAPHIC_DISTRIBUTION
WHERE ca_state IS NOT NULL
ORDER BY total_customers DESC;
  1. 数据集 2: 客户城市分布详情ADS_客户城市分布
SELECT 
    ca_city AS 城市,
    total_customers AS 客户数
FROM sr_demo_db.ADS_MV_CUSTOMER_CITY_DISTRIBUTION
WHERE ca_city IS NOT NULL
ORDER BY total_customers DESC
  1. 设计报表
  1. 点击 【仪表板】> 【新建仪表板】。
  2. 选择 空白模板。
  3. 数据集拖入画布,分别配置图表。


相关文档:

共享样例数据集

Serverless StarRocks访问DLF

Paimon Catalog

目录
相关文章
|
3月前
|
存储 缓存 Cloud Native
EMR StarRocks Stella 内核正式发布,登顶 TPC 榜单全球第一
EMR Serverless StarRocks 重磅发布全新企业级版本内核 Stella (StarRocks Efficient and Lightening-fast Lakehouse),完全兼容开源 StarRocks,为用户提供企业级的产品功能、卓越的性能及稳定性保障。
|
3月前
|
存储 人工智能 分布式计算
阿里云DLF 3.0:面向AI时代的智能全模态湖仓管理平台
在2025年云栖大会,阿里云发布DLF 3.0,升级为面向AI时代的智能全模态湖仓管理平台。支持结构化与非结构化数据统一管理,实现秒级实时处理、智能存储优化与细粒度安全控制,助力企业高效构建Data+AI基础设施。
1238 3
|
DataWorks 数据挖掘 Serverless
阿里云EMR Serverless StarRocks 内容合集
阿里云 EMR StarRocks 提供存算分离架构,支持实时湖仓分析,适用于多种 OLAP 场景。结合 Paimon 与 Flink,助力企业高效处理海量数据,广泛应用于游戏、教育、生活服务等领域,显著提升数据分析效率与业务响应速度。
390 0
|
2月前
|
自然语言处理 运维 Serverless
打破 IK 分词“架构陷阱”——阿里云 ES Serverless 索引级词典的完美热更新实践
本文将通过一个真实事故的复盘,解析开源 IK 分词器架构设计中的不足,并介绍阿里云 ES Serverless 如何通过“索引级词典”能力,彻底解决热更新引发的搜索错配问题。
295 9
|
10月前
|
SQL 分布式计算 Serverless
鹰角网络:EMR Serverless Spark 在《明日方舟》游戏业务的应用
鹰角网络为应对游戏业务高频活动带来的数据潮汐、资源弹性及稳定性需求,采用阿里云 EMR Serverless Spark 替代原有架构。迁移后实现研发效率提升,支持业务快速发展、计算效率提升,增强SLA保障,稳定性提升,降低运维成本,并支撑全球化数据架构部署。
1083 56
鹰角网络:EMR Serverless Spark 在《明日方舟》游戏业务的应用
|
2月前
|
SQL 人工智能 分布式计算
【MaxCompute SQL AI 实操教程】0元体验使用大模型提效数据分析
【MaxCompute SQL AI 实操教程】0元体验使用大模型提效数据分析
456 3
|
Serverless BI
有奖实践,基于EMR StarRocks实现游戏玩家画像和行为分析
阿里云EMR-StarRocks联合镜舟科技,基于EMR-StarRocks实现游戏实时湖仓分析,免费试用物化视图、Paimon写入查询等新能力,前45位赢取StarRocks定制T恤、Lamy钢笔,小米充电宝,阿里云拍拍灯等活动礼品,前500位均可获得创意马克杯。
369 7