|
|
@@ -59,11 +59,11 @@
|
|
|
|
|
|
**目标**:消除对老环境(`alvis` 用户、`/home/alvis/release` 路径、硬编码的 worker 列表)的代码耦合。
|
|
|
|
|
|
-- [ ] 新建项目根 `.gitignore`(清单与注意事项见 `90-重构路线.md` §2.4)**— 必须先于 `conf/alerter.conf` 落地,避免敏感文件误入第一次提交**
|
|
|
+- [ ] 新建项目根 `.gitignore`(清单与注意事项见 `90-重构路线.md` §2.4)
|
|
|
- [ ] 建立 `conf/env.sh`(Shell 环境变量)
|
|
|
- [ ] 建立 `conf/env.py` 或 Python 读 `env.sh` 的桥接
|
|
|
- [ ] 建立 `conf/workers.conf`(DataX Worker 列表 + 权重 map,整体迁出 `bin/common/init.sh:18-31`)
|
|
|
-- [ ] 建立 `conf/alerter.conf`(钉钉/企微 Webhook,gitignore)
|
|
|
+- [ ] 建立 `conf/alerter.ini`(企微 Webhook,**入库**;格式见 `90-重构路线.md` §2.1)
|
|
|
- [ ] `dw_base/__init__.py` 瘦身(拆分初始化逻辑,见 `90-重构路线.md` §3)**— 必须先做,下面 spark-defaults 依赖瘦身后的 `PROJECT_ROOT_PATH`**
|
|
|
- [ ] 建立 `conf/spark-defaults.yaml`(Spark 全局默认参数,见 `90-重构路线.md` §2.3)
|
|
|
- [ ] 改造 `dw_base/spark/spark_sql.py`:构造函数 fall back 到 yaml;实现 L1(yaml) < L2(SQL 内 SET,仅 `spark.sql.*` 系生效) < L3(命令行 -sc / 构造函数传参) 三级覆盖
|
|
|
@@ -75,8 +75,7 @@
|
|
|
- [ ] 删除 `whoami == RELEASE_USER` 分流,`LOG_ROOT_DIR` 单值 `${HOME}/log` 放入 `conf/env.sh`(见 `90-重构路线.md` §7.2.1)
|
|
|
- [ ] 日志路径统一模板 `${LOG_ROOT_DIR}/{module}/{dt}/{file}.log`(3 层)
|
|
|
- [ ] 实现 `log_path(module, dt, file)` 工具函数(Python / Shell 各一份,单一来源)
|
|
|
-- [ ] 钉钉 access_token 从代码移入 `conf/alerter.conf`
|
|
|
-- [ ] 企微 Webhook Key 从代码移入 `conf/alerter.conf`
|
|
|
+- [ ] 企微 Webhook Key 从 `alerter_constants.py` 移入 `conf/alerter.ini`(钉钉已于 2026-04-20 全部删除,不再迁移)
|
|
|
- [ ] **DataX 入口收口为两条命令**(暂称 `datax-import` / `datax-export`,**命名待确认**;见 `90-重构路线.md` §2.6)
|
|
|
- [ ] 导入命令实现分区管理(`-skip-exist` / `-force-overwrite` / `-skip-partitions`)
|
|
|
- [ ] 导出命令实现源 HDFS 路径探测(`-src-check` / `-skip-missing`)
|
|
|
@@ -88,7 +87,7 @@
|
|
|
- [x] 清理 `dw_base/__init__.py:16` 死代码 `os.environ['HADOOP_CONF_DIR']`(2026-04-18,实测对 DataX JVM 无影响)
|
|
|
- [ ] HDFS 数据源 ini 新建:按新 schema 运维补齐 `datasource/hdfs/{env}/*.ini`(prod 带 `[hadoop_config]`;dev/test 只写 `[base] defaultFS`)
|
|
|
- [ ] HA 回归测试:真实 HA 集群 + 单 NN 集群 + 主备切换三场景
|
|
|
-- [ ] **DataX 速率配置外移**:`conf/datax-speed.conf` 定义分时速率档;`dw_base/datax/job_config_generator.py:60-67` 硬编码替换为读 conf(见 `90-重构路线.md` §2.9)
|
|
|
+- [ ] **DataX 速率配置外移**:`conf/datax-speed.ini` 定义分时速率档;`dw_base/datax/job_config_generator.py:60-67` 硬编码替换为读 conf(见 `90-重构路线.md` §2.9)
|
|
|
- [ ] 新建 `manual/imports/` + `manual/exports/` 目录(按日期 `{yyyymmdd}/` 组织一次性任务)
|
|
|
|
|
|
## 阶段 3:业务 SQL 从零开发
|
|
|
@@ -164,3 +163,4 @@
|
|
|
| 2026-04-20 | **UDF 模块重组(重构计划外)**:独立 `dw_base/spark/udf/` 目录结构为 `common/`(通用 UDF,SparkSQL 入口自动 `ADD FILE` 注册)+ `business/`(业务专用 UDF,SQL 中按需 `ADD FILE` 加载)两类。(a) 6 份源文件(根 `spark_common_udf.py` 24 函数 + `spark_json_array_udf.py` 23 函数 + `spark_mmq_udf.py` 3 函数 + `customs/cts_common.py` + `product/escape_udf.py` + `enterprise/spark_eng_ent_json_array_append_udf.py`)通读 + 去重 + 业务耦合剥离后,合并为单文件 `common/spark_common_udf.py`(500 行 40 函数,分 JSON / Array / String / Numeric-Date-Hash / Cross-type-converters 5 段)。单文件方案而非按类型拆分,理由:跨类型转换函数(`json2str` / `arr2json` / `str2map` 等约 9 个,占 20%+)没有明确归属,强行分只会制造边界争议。(b) 清理 `dw_base/spark/udf/` 下所有老业务 UDF 子目录与根级业务文件共 60 个:整目录删 `contacts/` / `customs/` / `enterprise/` / `product/` / `productApplication/` / `test/`;根目录删 `spark_eng_ent_name_clean.py` / `spark_india_format_phone_udf.py` / `solr_similar_match_udf.py` / `main_test.py` 以及 3 份源 UDF 文件。(c) `dw_base/__init__.py:27` `COMMON_SPARK_UDF_FILE` 常量路径由 `dw_base/spark/udf/spark_common_udf.py` 改为 `dw_base/spark/udf/common/spark_common_udf.py`(`bin/spark-sql-starter.py:172-173` 两处 usage 靠常量传递自动生效)。(d) 删除老 `dingtalk_*` / `mg2es` 级联清理中没赶上的 UDF 业务耦合文件在此批统一清零。`business/` 目录暂为骨架,后续真正出现新业务 UDF 时按需补 | — |
|
|
|
| 2026-04-20 | **删除空壳模块 `ml/` / `elasticsearch/` / `flink/` / `validation/`(反转 2026-04-20 早先"暂留"记录)**:4 个目录下均只有 56 字节空 `__init__.py`,零 import / 零内容,保留无意义;2026-04-20 UDF 模块重组 changelog 末尾"暂留"一句是误记。`git rm -r` 一批清零。同步 `kb/90-重构路线.md §5.1` 从废弃代码表中移除这 4 行并加指向本条 changelog 的尾注。`dw_base/common/` 因 `alerter_constants.py` / `config_constants.py` / `container.py` / `template_constants.py` 非空保留,不在本批 | — |
|
|
|
| 2026-04-20 | **删除 `dw_base/database/mongodb_utils.py` + kb/90 §5.1 档案化改造**:(a) `mongodb_utils.py` 184 行真实内容仅 `MongoDBHandler` 薄类 19 行(吃 url/port/user/pwd 拼 URI 实例化 MongoClient),其余 165 行全是公司名→Mongo/ES 查询 + TF-IDF 关键词抽取 + 三段老集群 `dds-m5e*` 连接串注释。grep 零外部引用。新项目若需连 Mongo 一行 `MongoClient(uri)` 即可,薄包装无保留价值。(b) §5.1 原表两行实际状态:`mongodb_utils.py` = 本次删除;`conf/datax/` 下老项目遗留 ini/datasource = 项目初始化 `8d2ade5` 时已整体挪入 `conf/bak/datax/{config,datasource}/` 并由 `.gitignore:6 conf/bak` 拦截,早已完成但没画勾。(c) §5.1 改造为"待清理表(当前为空)+ 历史档案表(完成项留档)"双表结构,空壳模块 4 行 + 本次 mongodb_utils + conf/datax 挪 bak 三项入档案。尾注说明:代码里残留的 `conf/datax/config/` replace 死逻辑 + `conf/datax/generated` 默认值属于 §2.x 路径硬编码清理(改名 `conf/datax-json/`),不在本节范围 | — |
|
|
|
+| 2026-04-20 | **alerter + datax-speed 扩展名统一为 `.ini` + alerter 口径统一为"入库"**:(a) `conf/alerter.conf` → `conf/alerter.ini` + 从 gitignore 改为入库;反转 2026-04-15 changelog(line 139)当时记的 `.conf` + gitignore 口径。理由:项目 conf/ 全部 ini + 代码侧 `configparser` 使用 10+ 次 + `PyYAML` 在 requirements 但零 `import yaml`(躺尸依赖)→ ini 是事实标准;webhook key 低敏(最多被拿去发垃圾消息,非账密级)+ 部署靠 git pull,gitignore 会让 bigdata / DolphinScheduler 拉不到配置。结构:`[common] url_prefix` + `[channels] ba/dcp/etl/skb/realtime = <key>`。(b) `conf/datax-speed.conf` → `conf/datax-speed.ini`,同一口径收敛,消除 `.conf/.ini` 混用。同步点:kb/00 §6 sparkconfig 表告警 Webhook 行(gitignore 列 `是` → `否`)、kb/90 §2.1 硬编码表 alerter 行 / §2.4 目录树 / §2.9 整节 4 处、kb/92 阶段 2 checklist 4 处(line 62 去掉"敏感文件"措辞、line 66 改为入库、line 78 钉钉条删除合并入 line 79、line 91 扩展名改)、记忆 `project_templates_and_config` 去掉"kb/92 一致性提醒"段(已消除)。**未改动**:2026-04-15 changelog line 139(历史快照保留)、2026-04-18 changelog line 153(历史快照保留)、`workers.conf` 扩展名 + kb/90 §2.1 里"ini 或 yaml 格式"未定的表述(不在本批范围,用户后续拍板) | — |
|