dw-project
基于 PySpark + DataX 的数据仓库项目,负责多源数据采集、清洗、分层加工和分发。
本 README 兼作开发手册,也是 vibe coding 和 Review 的参考依据。
技术栈
- 计算引擎:PySpark 2.4 on YARN (CDH 6.3.2)
- 数据集成:DataX_v202309
- 元数据管理:Hive MetaStore(MySQL 后端)
- 存储:HDFS (ORC)、RDS PostgreSQL --> Polar PostgreSQL、Elasticsearch
- 调度:DolphinScheduler
- 告警:企业微信机器人
目录结构
dw-project/
├── bin/ # 启动脚本(Shell + Python 入口)
├── jobs/ # 业务代码,按数仓分层组织
│ ├── raw/ # 原始数据采集(DataX ini)
│ ├── ods/ # 贴源层(SQL)
│ ├── dwd/ # 明细层(SQL)
│ ├── dws/ # 汇总层(SQL)
│ ├── tdm/ # 主题域模型层(SQL)
│ └── ads/ # 应用层(SQL + 导出 ini)
├── dw_base/ # 通用库(Spark 引擎、DataX 引擎、工具函数、UDF)
├── kb/ # 知识库(项目文档)
├── conf/ # 配置(非敏感项,样例 + 环境配置)
├── publish.sh # 集群部署脚本
└── requirements.txt
数据源连接配置(含账密)存放在项目同级目录 datasource/ 下,由运维维护,不纳入版本控制。
主要执行入口
| 脚本 |
用途 |
示例 |
bin/spark-sql-starter.py |
执行 Spark SQL |
-f jobs/customs/001india/02incr/01india_im/02dwd.sql -dt 20250101 |
bin/datax-multiple-hive-job-starter.sh |
MySQL→Hive 批量采集(主力) |
-gcd conf/datax/config/mysql-hdfs/prod -start-date 20250101 -parallel |
bin/datax-multiple-job-starter.sh |
通用批量 DataX 同步 |
-gcd jobs/customs/001india/02incr/01india_im/ -start-date 20250101 |
bin/datax-single-job-starter.sh |
单个 DataX 同步 |
-gc jobs/xxx/from_mongo.ini -start-date 20250101 |
数仓分层
PG/ES ──DataX(raw)──> RAW ──> ODS ──> DWD ──> DWS ──> TDM ──> ADS
开发环境
- 使用 PyCharm 远程 SSH 连接服务器开发调试
- Python 3.6.8,依赖见
requirements.txt
- 部署:
publish.sh 通过 git pull + rsync 分发到集群各节点
文档索引
文件按编号前缀分组,序号越小越基础、越靠前阅读。
0x 项目与环境
| 文档 |
内容 |
| 00-项目架构 |
模块关系图、Spark SQL / DataX 执行时序、DataX 脚本详细使用说明、配置管理 |
| 01-运行环境 |
CDH 技术栈版本、平台架构图、开发侧约束 |
| 02-权限与账号 |
鉴权链路、job账号 vs 个人账号 |
1x 业务上下文
| 文档 |
内容 |
| 10-业务流程 |
Hobby Stocks 用户侧 + 商家侧 + 售后全链路流程图 |
| 11-数据资产 |
业务库、埋点数据、爬虫数据、采购数据清单 |
| 12-同步方案 |
PG → Hive 存量/增量/历史归档/CDC 同步策略与阶段演进 |
2x 数仓建模
3x 开发流程
9x 过渡资料
阅读建议
新成员上手路径:
- 00-项目架构 — 了解模块全貌
- 01-运行环境 — 了解基础设施
- 20-数仓分层与建模 — 了解建模方法论
- 21-命名规范 — 熟悉命名规则(★ 最高频参考)
- 30-开发规范 — 熟悉开发流程
开发样板:conf/templates/ 下按引擎分 datax / spark 两类,详见 30-开发规范 §6。