本 Skill 提供从零搭建 Apache Flink 实时数仓的完整方案,覆盖数据接入、分层建模、流批一体到生产调优的全链路。
适用人群:大数据工程师、数据仓库开发者、后端转大数据、面试备战
一键启动:提供完整 Docker Compose 环境,MySQL → Kafka → Flink → Paimon → StarRocks 端到端链路。
读取 references/environment.md 获取 Docker Compose 完整配置和依赖说明。
cd scripts
docker-compose up -d
等待所有服务就绪(约2-3分钟),验证:
docker-compose ps # 确认 MySQL、Kafka、Flink JobManager/TaskManager、Paimon 均 running
读取 references/flink-cdc-guide.md 获取 CDC 配置详解。
核心流程:
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'
);
读取 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;
读取 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;
读取 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
→ Step 2 的 Flink CDC 流程
→ Step 3 DWD + Step 4 物化表 + StarRocks 查询
→ 使用物化表修改 FRESHNESS,从 INTERVAL '5' MINUTE 切换为批模式
→ 通读 references/interview-qa.md,覆盖 Flink 高频面试题
| 资源 | 路径 | 用途 |
|---|---|---|
| :--- | :--- | :--- |
| Docker环境 | scripts/docker-compose.yml | 一键启动全链路环境 |
| Flink SQL 模板 | scripts/flink-sql-templates/ | 四层建模 SQL 模板 |
| CDC配置参考 | references/flink-cdc-guide.md | CDC 配置详解与踩坑 |
| 数仓分层规范 | references/warehouse-layers.md | 四层建模规范 |
| 物化表语法 | references/materialized-table.md | Flink 2.0 物化表详解 |
| 生产调优 | references/tuning-guide.md | 参数调优清单 |
| 面试题库 | references/interview-qa.md | Flink 高频面试题及解析 |
| 环境说明 | references/environment.md | 环境要求与依赖 |
docker-compose pullbinlog_format=ROW(内容由AI生成,仅供参考)
共 1 个版本