# dw-project 基于 PySpark + DataX 的数据仓库项目,负责多源数据采集、清洗、分层加工和分发。 > 本 README 兼作**开发手册**,也是 **vibe coding 和 Review 的参考依据**。 ## 项目现状速读(冷启动必读) - **`launch-pad/` 不做业务迁移**:里面是上个项目(与当前业务无关)的历史业务代码,仅作**样板 SQL / DataX ini 写法的参考**,新项目业务 SQL 全部从零开发,完成后 `launch-pad/` 整体删除 - **重构进度**:进度追踪见 `kb/92-重构进度.md` ## 技术栈 - **计算引擎**:PySpark 2.4 on YARN (CDH 6.3.2) - **数据集成**:DataX_v202309 - **元数据管理**:Hive MetaStore - **存储**: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-项目架构](kb/00-项目架构.md) | 模块关系图、Spark SQL / DataX 执行时序、DataX 脚本详细使用说明、配置管理 | | [01-运行环境](kb/01-运行环境.md) | CDH 技术栈版本、平台架构图、开发侧约束 | | [02-权限与账号](kb/02-权限与账号.md) | 鉴权链路、job账号 vs 个人账号 ### 1x 业务上下文 | 文档 | 内容 | |----|----| | [10-业务流程](kb/10-业务流程.md) | Hobby Stocks 用户侧 + 商家侧 + 售后全链路流程图 | | [11-数据资产](kb/11-数据资产.md) | 业务库、埋点数据、爬虫数据、采购数据清单 | | [12-同步方案](kb/12-同步方案.md) | PG → Hive 存量/增量/历史归档/CDC 同步策略与阶段演进 | ### 2x 数仓建模 | 文档 | 内容 | |----|----| | [20-数仓分层与建模](kb/20-数仓分层与建模.md) | 分层定义、主题域、总线矩阵、维度建模五步法、同步策略 | | [21-命名规范](kb/21-命名规范.md) ★ | 五段式表名、字段规则、词根字典、建表自检 Checklist | | [22-指标体系](kb/22-指标体系.md) | 指标分类、逻辑结构、指标/维度/度量字典 | | [23-标签体系](kb/23-标签体系.md) | TDM 层用户/商品/商家画像设计 | ### 3x 开发流程 | 文档 | 内容 | |----|----| | [30-开发规范](kb/30-开发规范.md) | TPAD 任务规范、数仓数据开发流程、代码 / SQL 规范、Git 协作规范 | | [31-UDF手册](kb/31-UDF手册.md) | UDF 自查表 | ### 9x 过渡资料 | 文档 | 内容 | |----|----| | [90-重构路线](kb/90-重构路线.md) | 基于老项目代码分析的重构路线(P0-P3) | | [92-重构进度](kb/92-重构进度.md) | 重构任务 checklist 与当前进度 | ## 阅读建议 **新成员上手路径:** 1. [00-项目架构](kb/00-项目架构.md) — 了解模块全貌 2. [01-运行环境](kb/01-运行环境.md) — 了解基础设施 3. [20-数仓分层与建模](kb/20-数仓分层与建模.md) — 了解建模方法论 4. [21-命名规范](kb/21-命名规范.md) — 熟悉命名规则(★ 最高频参考) 5. [30-开发规范](kb/30-开发规范.md) — 熟悉开发流程 **样板(待补充):** - DataX ini 样板 → `conf/templates/datax/{raw,ads,manual}/*.template.ini` - Spark SQL 样板 → `conf/templates/sql/*.template.sql` - 建表 DDL 样板 → `conf/templates/ddl/*.template.sql` - 数据源连接样板 → `conf/templates/datasource/*.template.ini`