← 返回
未分类

Flink 实时数仓

Flink+Paimon+StarRocks 实时数仓全链路:CDC 入湖、物化表开发、分钟级大屏输出,一套 SQL 流批一体。
庄子十八代技师
未分类 community v1.0.0 1 版本 98245.6 Key: 无需
★ 0
Stars
📥 56
下载
💾 0
安装
1
版本
#latest

概述

Flink 实时数仓全流程实战

概述

本 Skill 提供从零搭建 Apache Flink 实时数仓的完整方案,覆盖数据接入、分层建模、流批一体到生产调优的全链路。

适用人群:大数据工程师、数据仓库开发者、后端转大数据、面试备战

一键启动:提供完整 Docker Compose 环境,MySQL → Kafka → Flink → Paimon → StarRocks 端到端链路。


前置环境

读取 references/environment.md 获取 Docker Compose 完整配置和依赖说明。

最小硬件要求

  • CPU: 4核+
  • 内存: 16GB+
  • 磁盘: 50GB+
  • Docker & Docker Compose

操作流程

Step 1: 启动环境

cd scripts
docker-compose up -d

等待所有服务就绪(约2-3分钟),验证:

docker-compose ps  # 确认 MySQL、Kafka、Flink JobManager/TaskManager、Paimon 均 running

Step 2: Flink CDC 数据入湖(ODS层)

读取 references/flink-cdc-guide.md 获取 CDC 配置详解。

核心流程:

  1. MySQL 开启 binlog(已预配置)
  2. Flink CDC 订阅 MySQL 变更
  3. 实时写入 Paimon ODS 表

Flink SQL 示例

-- 创建 Paimon Catalog
CREATE CATALOG paimon_catalog WITH (
    'type' = 'paimon',
    'warehouse' = 'file:///tmp/paimon-warehouse'
);

USE CATALOG paimon_catalog;

-- ODS 层:MySQL 实时入湖
CREATE TABLE ods_orders (
    order_id BIGINT PRIMARY KEY NOT ENFORCED,
    user_id BIGINT,
    product_id BIGINT,
    amount DECIMAL(10,2),
    status STRING,
    create_time TIMESTAMP(3),
    update_time TIMESTAMP(3)
) WITH (
    'connector' = 'mysql-cdc',
    'hostname' = 'mysql',
    'port' = '3306',
    'username' = 'root',
    'password' = 'root',
    'database-name' = 'ecommerce',
    'table-name' = 'orders'
);

Step 3: 实时数仓分层(DWD → DWS → ADS)

读取 references/warehouse-layers.md 获取四层建模规范和 SQL 模板。

分层架构

层级名称作用存储格式更新频率
:---:---:---:---:---
ODS操作数据层原始数据同步Paimon 主键表实时
DWD明细数据层清洗、关联、打宽Paimon 主键表实时
DWS汇总数据层轻度聚合Paimon 聚合表实时
ADS应用数据层面向业务StarRocks/Doris实时

DWD 示例(订单宽表):

CREATE TABLE paimon_catalog.ecommerce.dwd_order_detail AS
SELECT 
    o.order_id,
    o.user_id,
    u.user_name,
    u.city,
    o.product_id,
    p.product_name,
    p.category,
    o.amount,
    o.status,
    o.create_time
FROM ods_orders o
LEFT JOIN ods_users FOR SYSTEM_TIME AS OF o.proc_time AS u 
    ON o.user_id = u.user_id
LEFT JOIN ods_products FOR SYSTEM_TIME AS OF o.proc_time AS p
    ON o.product_id = p.product_id;

Step 4: Flink 物化表(Materialized Table)— 流批一体声明式开发

读取 references/materialized-table.md 获取物化表完整语法。

物化表是 Flink 2.0 的核心特性,实现"一份 SQL,流批两用":

-- 创建物化表:声明数据新鲜度 + 业务逻辑
CREATE MATERIALIZED TABLE dws_hourly_sales
PARTITIONED BY (dt, hr)
FRESHNESS = INTERVAL '5' MINUTE
AS SELECT 
    DATE_FORMAT(create_time, 'yyyy-MM-dd') AS dt,
    DATE_FORMAT(create_time, 'HH') AS hr,
    category,
    COUNT(DISTINCT order_id) AS order_cnt,
    SUM(amount) AS total_amount,
    AVG(amount) AS avg_amount
FROM dwd_order_detail
GROUP BY DATE_FORMAT(create_time, 'yyyy-MM-dd'),
         DATE_FORMAT(create_time, 'HH'),
         category;

Step 5: 生产调优

读取 references/tuning-guide.md 获取完整调优清单。

关键参数

# Flink 调优
taskmanager.memory.process.size: 4096m
taskmanager.numberOfTaskSlots: 4
parallelism.default: 8
execution.checkpointing.interval: 60s
state.backend: rocksdb

# Paimon 调优
bucket: 8
changelog-producer: input
merge-engine: partial-update

常见场景速查

场景1:MySQL 数据实时同步到数据湖

→ Step 2 的 Flink CDC 流程

场景2:构建实时大屏(GMV/订单量实时展示)

→ Step 3 DWD + Step 4 物化表 + StarRocks 查询

场景3:流批一体:白天实时 + 凌晨全量回刷

→ 使用物化表修改 FRESHNESS,从 INTERVAL '5' MINUTE 切换为批模式

场景4:面试准备

→ 通读 references/interview-qa.md,覆盖 Flink 高频面试题


资源索引

资源路径用途
:---:---:---
Docker环境scripts/docker-compose.yml一键启动全链路环境
Flink SQL 模板scripts/flink-sql-templates/四层建模 SQL 模板
CDC配置参考references/flink-cdc-guide.mdCDC 配置详解与踩坑
数仓分层规范references/warehouse-layers.md四层建模规范
物化表语法references/materialized-table.mdFlink 2.0 物化表详解
生产调优references/tuning-guide.md参数调优清单
面试题库references/interview-qa.mdFlink 高频面试题及解析
环境说明references/environment.md环境要求与依赖

注意事项

  • 首次启动 Docker 环境需拉取镜像,建议提前执行 docker-compose pull
  • Flink CDC 依赖 MySQL binlog,确保 MySQL 已开启 binlog_format=ROW
  • Paimon 本地模式适合开发测试,生产环境建议使用 HDFS/S3
  • 物化表功能需要 Flink 1.20+ 版本

(内容由AI生成,仅供参考)

版本历史

共 1 个版本

  • v1.0.0 包含内容: - 实时数仓四层分层规范(ODS/DWD/DWS/ADS)及数据质量规则 - Flink CDC 配置指南 + 常见踩坑解决方案 - Flink 2.0 物化表声明式语法 + 3 个实战场景 - 8 个开箱即用 SQL 模板(CDC 同步、ETL 宽表、GMV 聚合、用户画像、Top-N 热销榜、CEP 异常检测、对账、Deduplicate) - docker-compose 一键启动 Flink+Paimon+StarRocks+MySQL 全栈环境 - 电商测试数据集(init.sql) 当前
    2026-06-01 14:07 安全 安全

安全检测

腾讯云安全 (Keen)

安全,无风险
查看报告

腾讯云安全 (Sanbu)

安全,无风险
查看报告

🔗 相关推荐

数据建模架构师

user_69009747
驾驭维度建模、Data Vault 与湖仓一体三把利剑,让数据资产"活"起来。本技能覆盖 Kimball 维度建模(星型模型/SCD六种策略/事实表四类型)、Inmon CIF 企业信息工厂、Data Vault 2.0(Hub/Link/
★ 0 📥 63

湖仓一体架构师

user_69009747
从传统数仓到湖仓一体迁移的完整架构方案。Iceberg/Hudi/Delta/Paimon 四大开放表格式深度对比,六种湖仓架构模式(Medallion/Lambda/Kappa/Data Mesh/Lakehouse+AI/Lakehou
★ 0 📥 64

RAG 知识库搭建

user_69009747
企业级 RAG 知识库从零搭建全流程。文档分块策略(固定/语义/结构化三大方案 + 小2大高级优化)、2026 主流嵌入模型选型(中文 BGE / 多语言 BGE-M3 / 英文 OpenAI,含 MTEB 榜单)、完整 Pipeline(
★ 0 📥 71