|
@@ -13,6 +13,7 @@ poyee-data-warehouse/ # 项目根目录(仓库名 = 部署名)
|
|
|
│ ├── datax-single-job-starter.sh# DataX 单任务启动
|
|
│ ├── datax-single-job-starter.sh# DataX 单任务启动
|
|
|
│ ├── datax-multiple-job-starter.sh # DataX 批量任务启动
|
|
│ ├── datax-multiple-job-starter.sh # DataX 批量任务启动
|
|
|
│ ├── datax-job-config-generator.py # ini→json 配置生成
|
|
│ ├── datax-job-config-generator.py # ini→json 配置生成
|
|
|
|
|
+│ ├── publish.sh # 集群部署脚本(DS 调度入口,和 bin 同类)
|
|
|
│ └── ...
|
|
│ └── ...
|
|
|
├── jobs/ # 业务代码层(新建,替代老项目 launch-pad/),每日调度执行
|
|
├── jobs/ # 业务代码层(新建,替代老项目 launch-pad/),每日调度执行
|
|
|
│ ├── raw/ # 原始数据采集(DataX ini 或 CSV 导入任务定义)
|
|
│ ├── raw/ # 原始数据采集(DataX ini 或 CSV 导入任务定义)
|
|
@@ -31,19 +32,21 @@ poyee-data-warehouse/ # 项目根目录(仓库名 = 部署名)
|
|
|
│ ├── imports/{yyyymmdd}/ # 一次性入仓(硬盘、历史 dump、外部 CSV),按执行日期归档
|
|
│ ├── imports/{yyyymmdd}/ # 一次性入仓(硬盘、历史 dump、外部 CSV),按执行日期归档
|
|
|
│ └── exports/{yyyymmdd}/ # 一次性出仓任务,按执行日期归档
|
|
│ └── exports/{yyyymmdd}/ # 一次性出仓任务,按执行日期归档
|
|
|
├── dw_base/ # 通用库层
|
|
├── dw_base/ # 通用库层
|
|
|
-│ ├── __init__.py # 全局初始化
|
|
|
|
|
-│ ├── common/ # 常量、容器
|
|
|
|
|
-│ ├── spark/ # SparkSQL 核心
|
|
|
|
|
-│ ├── udf/ # Spark UDF 库(common + business)
|
|
|
|
|
-│ ├── datax/ # DataX 配置生成引擎
|
|
|
|
|
-│ ├── database/ # MongoDB/MySQL 工具
|
|
|
|
|
-│ ├── scheduler/ # 调度辅助脚本
|
|
|
|
|
-│ ├── hive/ # Hive DDL 生成
|
|
|
|
|
-│ ├── utils/ # 通用工具函数
|
|
|
|
|
-│ └── ...
|
|
|
|
|
|
|
+│ ├── __init__.py # 全局初始化(环境检测、findspark、用户/权限判断、颜色常量)
|
|
|
|
|
+│ ├── common/ # 常量、容器(alerter / config / template 常量)
|
|
|
|
|
+│ ├── spark/ # SparkSQL 引擎(Session 管理、UDF 注册、SQL 执行、数据导出)
|
|
|
|
|
+│ ├── udf/ # UDF 库(common 通用 + business 业务专用)
|
|
|
|
|
+│ ├── datax/ # DataX 配置生成引擎(ini→json),含 datasources/ + plugins/
|
|
|
|
|
+│ ├── database/ # MongoDB / MySQL 原生客户端封装
|
|
|
|
|
+│ ├── utils/ # 通用工具(参数解析、日期、文件、日志、SQL 解析、字符串等)
|
|
|
|
|
+│ ├── io/ # (占位)I/O 边界:db / file / hdfs 跨进程读写
|
|
|
|
|
+│ ├── ops/ # (占位)湖内数据运维(小文件合并、分区清理、vacuum)
|
|
|
|
|
+│ ├── dq/ # (占位)数据质量检查(schema drift、值域、关联、规模)
|
|
|
|
|
+│ ├── pm/ # (占位)项目管理工具集成(TAPD / Jira API)
|
|
|
|
|
+│ └── sync/ # (占位)外部文档同步(Docmost → kb/inbox)
|
|
|
├── kb/ # 知识库:项目文档
|
|
├── kb/ # 知识库:项目文档
|
|
|
-├── conf/ # 配置层(当前为样例,后续存放非敏感配置)
|
|
|
|
|
-├── publish.sh # 集群部署脚本
|
|
|
|
|
|
|
+├── conf/ # 配置层(非敏感配置入库:alerter.ini / workers.ini / datax-speed.ini / spark-defaults.conf 等)
|
|
|
|
|
+├── tests/ # 测试:unit/ 纯函数单测 + integration/ Spark local[*] 集成测试
|
|
|
├── requirements.txt # Python 依赖
|
|
├── requirements.txt # Python 依赖
|
|
|
└── README.md
|
|
└── README.md
|
|
|
```
|
|
```
|
|
@@ -67,112 +70,11 @@ poyee-data-warehouse/ # 项目根目录(仓库名 = 部署名)
|
|
|
|
|
|
|
|
## 2. 核心模块职责
|
|
## 2. 核心模块职责
|
|
|
|
|
|
|
|
-| 模块 | 路径(新) | 职责 |
|
|
|
|
|
-|------|-----------|------|
|
|
|
|
|
-| 全局初始化 | `dw_base/__init__.py` | 环境检测、颜色常量、findspark 初始化、用户/权限判断 |
|
|
|
|
|
-| SparkSQL 引擎 | `dw_base/spark/spark_sql.py` | SparkSession 管理、UDF 注册、SQL 执行、数据导出 |
|
|
|
|
|
-| UDF 库 | `dw_base/udf/` | `common/` 通用 UDF(入口自动注册)+ `business/` 业务专用 UDF(按需 `ADD FILE`) |
|
|
|
|
|
-| DataX 引擎 | `dw_base/datax/` | ini 配置解析 → json 作业文件生成 |
|
|
|
|
|
-| DataX 数据源 | `dw_base/datax/datasources/` | 各类数据源的连接参数抽象 |
|
|
|
|
|
-| DataX 插件 | `dw_base/datax/plugins/` | Reader/Writer 工厂 + 各数据源实现 |
|
|
|
|
|
-| 数据库工具 | `dw_base/database/` | MongoDB、MySQL 原生客户端封装 |
|
|
|
|
|
-| 调度辅助 | `dw_base/scheduler/` | 轮询调度、分区清理等(告警模块已删,待重写) |
|
|
|
|
|
-| Hive 工具 | `dw_base/hive/` | DDL 生成、库表命名规则 |
|
|
|
|
|
-| 通用工具 | `dw_base/utils/` | 参数解析、日期、文件、日志、SQL 解析、字符串等 |
|
|
|
|
|
|
|
+模块职责已并入 §1 目录结构的行尾注释,不再单独列表(避免目录变动时多处同步)。
|
|
|
|
|
|
|
|
## 3. 模块关系图
|
|
## 3. 模块关系图
|
|
|
|
|
|
|
|
-```mermaid
|
|
|
|
|
-graph TB
|
|
|
|
|
- subgraph 外部系统
|
|
|
|
|
- DS[DolphinScheduler<br/>调度系统]
|
|
|
|
|
- YARN[Spark on YARN]
|
|
|
|
|
- HIVE[Hive MetaStore]
|
|
|
|
|
- HDFS[HDFS]
|
|
|
|
|
- MONGO[(MongoDB)]
|
|
|
|
|
- MYSQL[(MySQL)]
|
|
|
|
|
- CK[(ClickHouse)]
|
|
|
|
|
- ES[(Elasticsearch)]
|
|
|
|
|
- KAFKA[Kafka]
|
|
|
|
|
- DORIS[(Doris)]
|
|
|
|
|
- REDIS[(Redis)]
|
|
|
|
|
- DINGTALK[钉钉/企微<br/>告警]
|
|
|
|
|
- end
|
|
|
|
|
-
|
|
|
|
|
- subgraph bin [bin/ 启动脚本]
|
|
|
|
|
- SPARK_STARTER[spark-sql-starter.py]
|
|
|
|
|
- DATAX_MULTI[datax-multiple-job-starter.sh]
|
|
|
|
|
- DATAX_SINGLE[datax-single-job-starter.sh]
|
|
|
|
|
- DATAX_GEN[datax-job-config-generator.py]
|
|
|
|
|
- DORIS_STARTER[doris-*-starter.py]
|
|
|
|
|
- INIT_SH[common/init.sh]
|
|
|
|
|
- end
|
|
|
|
|
-
|
|
|
|
|
- subgraph dw_base [dw_base/ 通用库]
|
|
|
|
|
- INIT_PY[__init__.py<br/>全局初始化]
|
|
|
|
|
- SPARK_SQL[spark/spark_sql.py<br/>SparkSQL 引擎]
|
|
|
|
|
- UDF[udf/<br/>UDF 库]
|
|
|
|
|
- DATAX_ENGINE[datax/<br/>配置生成引擎]
|
|
|
|
|
- DATASOURCES_CODE[datax/datasources/<br/>数据源抽象]
|
|
|
|
|
- PLUGINS[datax/plugins/<br/>Reader/Writer]
|
|
|
|
|
- SCHEDULER[scheduler/<br/>调度辅助]
|
|
|
|
|
- DB_UTILS[database/<br/>DB 工具]
|
|
|
|
|
- UTILS[utils/<br/>通用工具]
|
|
|
|
|
- end
|
|
|
|
|
-
|
|
|
|
|
- subgraph jobs [jobs/ 按数仓分层组织]
|
|
|
|
|
- RAW[raw/<br/>原始数据采集 ini]
|
|
|
|
|
- ODS_JOBS[ods/<br/>贴源层 SQL]
|
|
|
|
|
- DWD_JOBS[dwd/<br/>明细层 SQL]
|
|
|
|
|
- DWS_JOBS[dws/<br/>汇总层 SQL]
|
|
|
|
|
- TDM_JOBS[tdm/<br/>主题域模型 SQL]
|
|
|
|
|
- ADS_JOBS[ads/<br/>应用层 SQL + 导出 ini]
|
|
|
|
|
- end
|
|
|
|
|
-
|
|
|
|
|
- subgraph external_conf [项目同级 datasource/]
|
|
|
|
|
- DS_INI[数据源 .ini<br/>含账密]
|
|
|
|
|
- end
|
|
|
|
|
-
|
|
|
|
|
- DS -->|触发| DATAX_MULTI
|
|
|
|
|
- DS -->|触发| SPARK_STARTER
|
|
|
|
|
- DS -->|触发| DORIS_STARTER
|
|
|
|
|
-
|
|
|
|
|
- DATAX_MULTI --> DATAX_SINGLE
|
|
|
|
|
- DATAX_SINGLE --> DATAX_GEN
|
|
|
|
|
- DATAX_GEN --> DATAX_ENGINE
|
|
|
|
|
- DATAX_ENGINE --> PLUGINS
|
|
|
|
|
- PLUGINS --> DATASOURCES_CODE
|
|
|
|
|
- DATASOURCES_CODE -->|读取| DS_INI
|
|
|
|
|
-
|
|
|
|
|
- SPARK_STARTER --> INIT_PY
|
|
|
|
|
- SPARK_STARTER --> SPARK_SQL
|
|
|
|
|
- SPARK_SQL --> UDF
|
|
|
|
|
- SPARK_SQL -->|spark.sql| YARN
|
|
|
|
|
- YARN --> HIVE
|
|
|
|
|
- YARN --> HDFS
|
|
|
|
|
-
|
|
|
|
|
- DATAX_SINGLE -->|python datax.py| HDFS
|
|
|
|
|
- DATAX_SINGLE -->|python datax.py| MONGO
|
|
|
|
|
- DATAX_SINGLE -->|python datax.py| MYSQL
|
|
|
|
|
- DATAX_SINGLE -->|python datax.py| CK
|
|
|
|
|
- DATAX_SINGLE -->|python datax.py| ES
|
|
|
|
|
- DATAX_SINGLE -->|python datax.py| KAFKA
|
|
|
|
|
-
|
|
|
|
|
- DORIS_STARTER --> DORIS
|
|
|
|
|
-
|
|
|
|
|
- SCHEDULER --> DINGTALK
|
|
|
|
|
- SCHEDULER --> DB_UTILS
|
|
|
|
|
- DB_UTILS --> MONGO
|
|
|
|
|
- DB_UTILS --> MYSQL
|
|
|
|
|
-
|
|
|
|
|
- DATAX_GEN -->|读取| RAW
|
|
|
|
|
- SPARK_STARTER -->|读取| ODS_JOBS
|
|
|
|
|
- SPARK_STARTER -->|读取| DWD_JOBS
|
|
|
|
|
- SPARK_STARTER -->|读取| DWS_JOBS
|
|
|
|
|
- SPARK_STARTER -->|读取| TDM_JOBS
|
|
|
|
|
- SPARK_STARTER -->|读取| ADS_JOBS
|
|
|
|
|
- DATAX_GEN -->|读取| ADS_JOBS
|
|
|
|
|
-```
|
|
|
|
|
|
|
+> 待 `dw_base/` 基础模块(`io/` / `ops/` / `dq/` / `pm/` / `sync/` 等占位)实装后重绘。当前过渡期保留此小节标题占位。
|
|
|
|
|
|
|
|
## 4. 执行链详解
|
|
## 4. 执行链详解
|
|
|
|
|
|