|
|
@@ -14,7 +14,7 @@
|
|
|
| **A** | 配置外移 / 硬编码清理 | `conf/env.sh` / `workers.ini` / `alerter.ini` / `spark-defaults.conf` / `datax-speed.ini` / datasource 多环境 / DataX 路径解耦 | 阶段 2 主体 |
|
|
|
| **B** | `dw_base/` 重组 | B1 `__init__.py` 瘦身 · B2 `common/utils/io/ops` 四模块边界定稿 · B3 代码风格修正(`__contains__` / SQL 注入 / Shell-Python 重复) · B4 新占位模块 registry | 阶段 2 / 4 混合 |
|
|
|
| **C** | `bin/` 入口收口 | `datax-import` / `datax-export` 两命令收口 · `datax-gc-generator` 从零重写 · `csv-to-hdfs-starter` 实现 · `publish.sh` 已入 `bin/` | 阶段 1 尾 + 阶段 2 |
|
|
|
-| **D** | 基础设施 | `tests/` 测试体系 · 告警模块重写 · 日志模块统一 · `dq/` 数据质量 · `sync/` Docmost · `pm/` 项目管理集成 | 阶段 2 / 4 |
|
|
|
+| **D** | 基础设施 | `tests/` 测试体系 · 告警模块重写 · 日志模块统一 · `dq/` 数据质量 · `wiki/` Docmost · `pm/` 项目管理集成 | 阶段 2 / 4 |
|
|
|
| **E** | 业务 SQL 从零开发 | `jobs/{raw,ods,dwd,dws,tdm,ads}/` · DS 工作流 | 阶段 3 |
|
|
|
| **F** | 老代码删除 | `launch-pad/` 整删 · 其他已确认废弃 | 阶段 5 |
|
|
|
|
|
|
@@ -520,19 +520,17 @@ record_per_channel = 100000
|
|
|
|
|
|
### 2.11 新占位模块 registry(B4) [聚簇 B(B4)]
|
|
|
|
|
|
-2026-04-20 本批建立的占位模块(空骨架 + README,实现待后续阶段),登记在此便于跨会话追踪:
|
|
|
+2026-04-20 本批建立的占位模块(空骨架,实现待后续阶段),登记在此便于跨会话追踪:
|
|
|
|
|
|
| 模块 | 路径 | 状态 | 何时实现 | 对应阶段 |
|
|
|
|------|------|------|----------|---------|
|
|
|
-| `io/` | `dw_base/io/{db,file,hdfs}/` | 骨架 | B2 四模块边界定稿后,搬入 `mysql_utils` + 文件读写 | 阶段 2 |
|
|
|
+| `io/` | `dw_base/io/{db,file,hdfs}/` | 骨架 | B2 四模块边界定稿后,搬入 db/file/hdfs 读写封装 | 阶段 2 |
|
|
|
| `ops/` | `dw_base/ops/` | 骨架 | 阶段 4 随"重新实现小文件合并 / 分区保留工具"落地 | 阶段 4 |
|
|
|
| `pm/` | `dw_base/pm/` | 骨架 | 待确认 TAPD vs Jira 后实现(commit → 任务 ID 联动) | 阶段 4 之后 |
|
|
|
| `dq/` | `dw_base/dq/` | 骨架 | 待确认告警落点 + 首批规则后实现 | 阶段 4 |
|
|
|
-| `sync/` | `dw_base/sync/` | 骨架 | 待确认 Docmost API 鉴权 / webhook 支持后实现 | 阶段 4 之后 |
|
|
|
+| `wiki/` | `dw_base/wiki/` | 骨架 | 待确认 Docmost API 鉴权 / webhook 支持后实现 | 阶段 4 之后 |
|
|
|
| `tests/` | `tests/{unit,integration}/` | 骨架 | 阶段 4 首批 UDF 单测启动时同步补 `conftest.py` + fixtures | 阶段 4 |
|
|
|
|
|
|
-**标准**:每个占位模块必须带 README,4 节(职责 / 接口 / 依赖 / 状态)—— 规则见项目根 `CLAUDE.md`(架构规划专用约定,普通开发不涉及)。空 `__init__.py` + 无 README 直接删除,不保留"暂留"。
|
|
|
-
|
|
|
### 2.12 通用 UDF 注释完整化 + 自查表(B 延伸) [聚簇 B]
|
|
|
|
|
|
**现状**:`dw_base/udf/common/spark_common_udf.py` 500 行 40 函数由 6 份老文件合并而来(见 `kb/92` 2026-04-20 UDF 重组条目),函数签名齐全但注释粗细不一:部分函数只有函数名,部分 docstring 写了逻辑但没写入参约束 / 返回类型 / 异常路径 / SQL 调用示例。`common/` 目录 UDF 由 `bin/spark-sql-starter.py` 自动 `ADD FILE` 注册(启动日志 40 条 `注册 Python UDF xxx` 可证),理论上任意 SQL 都能用,但"能用"不等于"知道怎么用"。
|
|
|
@@ -603,15 +601,6 @@ if name in self.REGISTERED_UDF:
|
|
|
|
|
|
**建议:** 统一由 Python 入口处理,Shell 脚本仅做最小化的环境设置后调用 Python。或提取为一份共享的配置文件。
|
|
|
|
|
|
-### 4.3 SQL 注入风险
|
|
|
-
|
|
|
-`mysql_utils.py` 中使用 f-string 拼接 SQL:
|
|
|
-```python
|
|
|
-sql = "... WHERE TABLE_SCHEMA='%s' ..." % (database, table_name)
|
|
|
-```
|
|
|
-
|
|
|
-**建议:** 改用参数化查询。
|
|
|
-
|
|
|
## 五、清理废弃代码(中优先级) [聚簇 F]
|
|
|
|
|
|
截至 2026-04-20 本节已无待清理项。后续若发现新的废弃代码,在下方表格追加登记;已完成项保留在"历史档案"表中留档。
|
|
|
@@ -628,6 +617,8 @@ sql = "... WHERE TABLE_SCHEMA='%s' ..." % (database, table_name)
|
|
|
|----------|---------|----------------|
|
|
|
| `dw_base/{validation,ml,flink,elasticsearch}/` 四空壳模块 | 整目录删(仅 56 字节空 `__init__.py`,零引用) | 2026-04-20,见 `92-进度.md` |
|
|
|
| `dw_base/database/mongodb_utils.py` | 整文件删(184 行 = 19 行 MongoClient 薄包装 + 165 行注释,零外部引用,需要时 `MongoClient(uri)` 一行重写) | 2026-04-20,见 `92-进度.md` |
|
|
|
+| `dw_base/database/` 整目录 | 整目录删(`__init__.py` + 仅剩的 `mysql_utils.py`,zero 外部引用;mysql 读写后续在 `dw_base/io/db/` 下重建) | 2026-04-21 |
|
|
|
+| 5 个占位模块 README(`dq/` `io/` `ops/` `pm/` `sync/`) | 批量删,占位模块 docstring 即文档,不再要求单独 README | 2026-04-21 |
|
|
|
| `conf/datax/` 下老项目遗留 ini / datasource 样例 | 整批挪入 `conf/bak/datax/{config,datasource}/`,由 `.gitignore:6 conf/bak` 拦截不入库 | 项目初始化 `8d2ade5`(2026-04-17) |
|
|
|
| `bin/flume-control.sh` | 整文件删(194 行)。职责:管理单个 Flume-Kafka-HDFS 作业生命周期(log/monitor/start/status/stop/restart/start-all/stop-all/restart-all 一组子命令)。实际状态:顶部 shebang 损坏(`ho#!/bin/bash`)、依赖已删除的 `bin/wechat-work-alert.sh`、L64 与 L162 `conf/flume/*.properties` vs `conf/flume/config/*.properties` 路径自相矛盾,整体已不可跑。按需重建时参考:`conf/flume/config/*.properties` 为作业配置约定、`flume-ng agent --conf-file` 为启动命令、启动前需 `mkdir -p ${LOG_ROOT_DIR}/flume-agent/${TODAY}`、监控循环 `head -n 1000 log | grep -E "gz failed\|java.io.IOException\|org.apache.flume.ChannelException\|java.lang.IllegalStateException"` 命中则发企微告警。Kafka→HDFS 接入通道重建时按新 `conf/alerter.ini` 告警外配重写,不沿用老 SKB_LITTLE_CUTE / 手机号硬编码 | 2026-04-21,见 `92-进度.md` |
|
|
|
|
|
|
@@ -766,8 +757,8 @@ else:
|
|
|
| **B2** `common/utils/io/ops` 四模块边界定稿 | 待启动 | — | §2.10 |
|
|
|
| **B3** `__contains__` → `in` 全局替换 | 待启动 | — | §4.1 |
|
|
|
| **B3** Shell/Python 环境检测去重(`bin/common/init.sh` ↔ `dw_base/__init__.py`) | 待启动 | B1 | §4.2 |
|
|
|
-| **B3** `mysql_utils.py` SQL 注入修复 | 待启动 | —(该文件在 §2.7 `datax-gc-generator` 重写时一并重造,可能被废) | §4.3 |
|
|
|
-| **B4** 新占位模块 `io/` / `ops/` / `pm/` / `dq/` / `sync/` 骨架 + README | ✅ 2026-04-20 已建 | B2 边界规则先立 §2.10 | §2.11 |
|
|
|
+| **B3** `mysql_utils.py` SQL 注入修复 | ✅ 2026-04-21 随 `dw_base/database/` 整目录删自动完成;mysql 读写后续在 `dw_base/io/db/` 下重造 | — | 见 §5.2 |
|
|
|
+| **B4** 新占位模块 `io/` / `ops/` / `pm/` / `dq/` / `wiki/` 骨架 | ✅ 2026-04-20 已建(2026-04-21 去掉各模块 README,docstring 即文档) | B2 边界规则先立 §2.10 | §2.11 |
|
|
|
|
|
|
### C `bin/` 入口收口
|
|
|
|
|
|
@@ -792,7 +783,7 @@ else:
|
|
|
| 分区保留工具重新实现(元表驱动 + 参数化) | 待启动 | **B2** → `ops/` | 阶段 4 |
|
|
|
| `dq/` 数据质量规则首批 + runner | 待启动 | `conf/alerter.ini` 就绪 | §2.11 |
|
|
|
| `pm/` TAPD / Jira 集成(commit → 任务 ID) | 待启动 | 确认平台选型 | §2.11 |
|
|
|
-| `sync/` Docmost → `kb/inbox/` | 待启动 | Docmost API 鉴权确认 | §2.11 |
|
|
|
+| `wiki/` Docmost → `kb/inbox/` | 待启动 | Docmost API 鉴权确认 | §2.11 |
|
|
|
| Ranger Hive 策略验证(集群侧) | 待启动 | — | §7.5 |
|
|
|
|
|
|
### E 业务 SQL 从零开发(阶段 3)
|