# 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/` 下,由运维维护,不纳入版本控制。 ## 主要执行入口(datax部分待重构) | 脚本 | 用途 | 示例 | |------|------|------| | `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` | 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 分发到集群各节点(暂时不使用) ## 文档索引 文件按编号前缀分组,序号越小越基础、越靠前阅读。每篇文档是其主题的**唯一权威**(SSOT),跨文档用 `§` 锚点互引、不复述。 ### 0x 项目与环境 | 文档 | 职责 | |----|----| | [00-项目导览](kb/00-项目导览.md) | **项目导览**:目录结构、配置管理、DataX / Spark 入口、执行链路、基础模块、部署架构 | | [01-运行环境](kb/01-运行环境.md) | **基础设施**:CDH 版本矩阵、集群拓扑、开发侧约束 | | [02-权限与账号](kb/02-权限与账号.md) | **鉴权链路**:HS2 doAs / PySpark / Ranger / LDAP;job 账号 vs 个人账号 | ### 1x 业务上下文 | 文档 | 职责 | |----|----| | [10-业务流程](kb/10-业务流程.md) | **业务全景**:用户 + 商家 + 售后全链路流程 | | [11-数据资产](kb/11-数据资产.md) | **数据源清单**:业务库 / 埋点 / 爬虫 / 采购 | | [12-同步方案](kb/12-同步方案.md) | **同步策略**:PG→Hive 存量 / 增量 / 历史归档 / CDC 阶段演进 | ### 2x 数仓建模 | 文档 | 职责 | |----|----| | [20-数仓分层与建模](kb/20-数仓分层与建模.md) | **建模方法论**:分层定义、主题域、总线矩阵、维度五步法 | | [21-命名规范](kb/21-命名规范.md) | **命名规则**:Hive 表 / 字段 / 词根字典 + 建表 Checklist | | [22-指标体系](kb/22-指标体系.md) | **指标字典**:指标 / 维度 / 度量定义与口径 | | [23-标签体系](kb/23-标签体系.md) | **TDM 画像**:用户 / 商品 / 商家标签 | ### 3x 开发流程 | 文档 | 职责 | |----|----| | [30-开发规范](kb/30-开发规范.md) | **开发方法论**:TPAD、数据开发流程、代码/SQL/Git 规范、DDL/jobs 文件组织、manual/ 临时 SQL、样板、存储 / raw 类型契约 | | [31-UDF手册](kb/31-UDF手册.md) | **UDF 登记表**:通用 + 业务 UDF 清单 | ### 9x 过渡资料 | 文档 | 职责 | |----|----| | [90-重构路线](kb/90-重构路线.md) | **重构决策**:P0-P3 聚簇、已完成结论、待启动方案 | | [92-重构进度](kb/92-重构进度.md) | **重构执行**:阶段 checklist + changelog | | [93-架构决策](kb/93-架构决策.md) | **ADR 沉淀**:重构收尾时 90/91/92 压缩留档(当前仍在重构,骨架) | ## 阅读建议 **新成员上手路径:** 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) — 熟悉开发流程