# dw-project 基于 PySpark + DataX 的数据仓库项目,负责多源数据采集、清洗、分层加工和分发。 ## 技术栈 - **计算引擎**: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 分发到集群各节点 ## 文档 详细文档见 `kb/` 目录