外观
云上数仓怎么落地(DataWorks / Hologres 通用原则)
难度与前置
难度:进阶
前置:理解离线分层与调度 READY;用过一种云托管数据开发平台即可。
读完能做什么:按「采集 → 仓 → 服务」拆云上职责,定可迁移的分层、依赖、OLAP 同步与验收,不绑死某一控制台。
适用场景
- 新团队上云,或从自建 Hadoop 迁到托管数仓 + 托管调度
- 已有 DataWorks(或同类)+ 分析型库(Hologres / 同类 OLAP),报表慢、补数乱、环境互相踩
不适用:
- 只学某云控制台截图操作(过时快,本文不写菜单路径)
- 未定业务过程与指标就选引擎
- 需要贴出你们生产项目名、空间名、内部表清单(禁止)
真实场景(一条,脱敏)
短剧投放数据:离线明细进托管仓,日报与多维分析进 OLAP;调度用云上工作流。
曾出现:
- 开发 / 生产同空间混跑,补数打满配额,当日 SLA 炸
- ADS 直接给业务查仓表,交互查询把离线槽位打满
- OLAP 同步成功但分区未对齐业务日,看板「成功」却缺数
改造原则(与厂商无关):
- 环境隔离 + 补数限流
- 仓负责算得对,OLAP 负责查得快;同步带 READY
- 同步键 = 业务分区,不是「任务绿勾」
结果:补数与当日任务错峰;看板延迟从「经常 > 1h」收到约定水位内(以你们 SLA 表为准验收)。
怎么做(步骤清单)
1. 先画三层职责,再选产品名
| 职责 | 做什么 | 云上常见承载(举例,可替换) |
|---|---|---|
| 调度与编排 | 依赖、重跑、补数、SLA | DataWorks 工作流 / Airflow / DolphinScheduler |
| 离线仓 | ODS→DWD→DWS→ADS 计算与存储 | MaxCompute / Hive / Spark / BigQuery |
| 服务 / OLAP | 交互查询、API、看板 | Hologres / Doris / ClickHouse / 云数仓 BI 加速层 |
原则:算与查分离。重计算留在仓;高并发点查进 OLAP。分层规则仍用 数仓分层,不因上云改成「一张宽表打天下」。
2. 环境与配额隔离(必做)
text
dev —— 试跑、小分区、可失败
pre —— 对账、演练补数(可选)
prod —— 仅发布物与定时;补数走审批 + 限流队列落地检查:
- [ ] 开发补数不能占用生产默认队列 / 资源组
- [ ] 生产发布走包 / 工作流版本,禁止在 prod 里改节点 SQL 热修成常态
- [ ] 跨环境禁止无审的「一把梭同步全表」
3. 调度:READY,不要只信托管「成功」
云上工作流一样适用 调度依赖:
- 产物契约(业务日、来源集合、质量门禁)
- 校验通过后再写 READY / 分区信号
- 下游依赖 READY;跨工作空间只等信号,不等「整空间全绿」
- 补数走 补数与重跑,限并发
厂商差异只在「依赖节点怎么配」;语义必须是数据就绪。
4. 仓表:分区、生命周期、成本
| 项 | 建议 |
|---|---|
| 分区 | 业务日 dt(或小时);禁止无分区巨大堆表 |
| 生命周期 | ODS 短、DWD/DWS 中、ADS 按产品定;到期归档或删 |
| 小文件 / 槽位 | 合并策略与仓内治理同 小文件 思路 |
| 成本 | 按科目看扫描量与存储;大回刷前估一次代价 |
SQL 仍要求分区幂等写入,见 离线幂等。
5. OLAP 同步:当作「受控发布」
text
仓 ADS/DWS 分区 READY
→ 同步任务(全量首灌 / 按 dt 增量)
→ OLAP 目标表校验(行数、主键、金额合计)
→ 写 OLAP 侧 READY 或切换查询视图
→ 看板 / API 只读「已发布」版本注意:
- 同步成功 ≠ 可服务:要有行数 / 对账门槛,见 对账
- 多时区报表:同步与看板的
biz_date口径写死一种(账户日 / UTC 日),进 指标口径 - 实时链路另见 CDC 与 延迟排查,不要和 T+1 同步混成一个工作流不加标注
6. 安全与权限(最小集)
- 按层授权:ODS 少人、ADS/OLAP 对人;禁止业务账号扫 ODS
- 密钥进密钥服务,不进节点参数明文
- 对外 API 走服务账号 + 限流,不直连生产仓高权限
7. 迁移 / 多云时只带「原则」
可带走的:分层、READY、幂等、对账、SLA、环境隔离。
不必带走的:某一控制台菜单、某一函数方言(用视图 / 中间层隔离方言)。
常见坑(至少这些)
开发生产同资源组
一次回刷拖死当日日报。看板直查离线仓
交互 SQL 与 ETL 抢槽位;应同步到 OLAP 或物化服务层。同步只看任务绿勾
分区错日、半份数据仍「成功」。用云厂商「一键同步」绕过质量门禁
坏数据进 OLAP 更快。生命周期默认永久
存储与费用无声涨;ODS 尤甚。多时区未写进口径字典
云上全局表一拼,三国报表对不齐。补数不限流
托管弹性让你误以为「能跑就行」,账单与邻居任务一起炸。
如何验收(带数字的前后对比)
| 指标 | 改前(示例) | 改后(目标) |
|---|---|---|
| 开发补数导致生产排队次数 / 月 | 如 ≥ 3 | 0(资源已隔离) |
| P0 ADS READY 时刻达标率(工作日) | 如 < 80% | ≥ 95%(按你们 SLA) |
| OLAP 与仓同 dt 金额 diff | 如偶发 > 1% | ≤ 约定阈值(如 0.1%) |
| 看板 P95 查询 | 如 > 10s | ≤ 约定(如 3s) |
| 无审批的 prod 热修次数 / 月 | 如很多 | 趋近 0 |
Checklist:
- [ ] 三层职责图(调度 / 仓 / OLAP)已文档化
- [ ] dev/prod 资源隔离;补数限流
- [ ] 跨空间依赖等 READY,不是整空间成功
- [ ] OLAP 同步有行数/对账门槛后再开放查询
- [ ] 生命周期与成本科目可查
- [ ] 无未公开项目名、空间名、内部账号写进文档
text
验收记录模板:
环境:
P0 表与 ready_by:
本周 READY 达标率:
OLAP vs 仓 diff(dt=):
补数是否走限流队列:
签字:相关面试题
题库小程序链接待定;先用站内锚点占位。
- [ ] 题:云上数仓为什么要画清调度/仓/OLAP 三层职责?(考察点:三层职责图已文档化)→ 占位:
#todo-interview-platform-principles-layers - [ ] 题:开发补数导致生产排队怎么验收已治理?(考察点:资源隔离+补数限流,排队次数趋 0)→ 占位:
#todo-interview-platform-principles-isolation - [ ] 题:跨空间依赖为何不能只看整空间成功?(考察点:等 READY 不是整空间成功)→ 占位:
#todo-interview-platform-principles-ready - [ ] 题:OLAP 开放查询前要过什么门槛?(考察点:行数/对账门槛后再开放)→ 占位:
#todo-interview-platform-principles-olap-gate
改写说明:写可迁移原则,厂商名仅作类比;不写控制台菜单,不贴未公开公司空间/表/配额数据。