|
@@ -117,8 +117,8 @@ D 基础设施 ─────┘
|
|
|
| JOB_NAME / JSON 文件名的 `ini→json` 转换逻辑重复实现 | Python 侧 `bin/datax-job-config-generator.py:126`(`os.path.basename(gcf).replace('.ini', '.json')`)+ Bash 侧 `bin/datax-single-job-starter.sh:88`(`basename .ini`) | 合一到 `dw_base.datax.path_utils.job_name_from_ini()`(或类似工具);Bash 侧通过 `python3 -c` 调用或在 `bin/common/init.sh` 定义等价 shell 函数,单一来源 |
|
|
| JOB_NAME / JSON 文件名的 `ini→json` 转换逻辑重复实现 | Python 侧 `bin/datax-job-config-generator.py:126`(`os.path.basename(gcf).replace('.ini', '.json')`)+ Bash 侧 `bin/datax-single-job-starter.sh:88`(`basename .ini`) | 合一到 `dw_base.datax.path_utils.job_name_from_ini()`(或类似工具);Bash 侧通过 `python3 -c` 调用或在 `bin/common/init.sh` 定义等价 shell 函数,单一来源 |
|
|
|
| ini 里 `dataSource` 字段拼接环境后缀 | 老项目写法 `dataSource = pg-hobby-prod` | 改为 `dataSource = {db_type}/{env}-{实例简称}`,代码按首段斜杠判 db_type(即父目录名);source ini 落位 `datasource/{db_type}/{env}-{实例简称}.ini`,无 env 子目录。已于 2026-04-22 落地(`dw_base/datax/plugins/plugin.py:37`、`plugin_factory.py:34`) ✅ |
|
|
| ini 里 `dataSource` 字段拼接环境后缀 | 老项目写法 `dataSource = pg-hobby-prod` | 改为 `dataSource = {db_type}/{env}-{实例简称}`,代码按首段斜杠判 db_type(即父目录名);source ini 落位 `datasource/{db_type}/{env}-{实例简称}.ini`,无 env 子目录。已于 2026-04-22 落地(`dw_base/datax/plugins/plugin.py:37`、`plugin_factory.py:34`) ✅ |
|
|
|
| 导出类 ini 扇出撞名风险 | `jobs/ads/{域}/` 下 ini 若都以源 Hive 表名命名,同一张 ads 表扇出到多个目标库时会重名覆盖 | 命名规则改为 `{源 Hive 表名}__{目标 db_type}_{目标 instance}.ini`(双下划线分隔源/目标) |
|
|
| 导出类 ini 扇出撞名风险 | `jobs/ads/{域}/` 下 ini 若都以源 Hive 表名命名,同一张 ads 表扇出到多个目标库时会重名覆盖 | 命名规则改为 `{源 Hive 表名}__{目标 db_type}_{目标 instance}.ini`(双下划线分隔源/目标) |
|
|
|
-| `dw_base/common/template_constants.py` 大量死代码 | 定义了 20+ 个 SQL 模板路径常量,实际只有 2 个(`MYSQL_HIVE_CREATE_TABLE_TEMPLATE` / `MYSQL_HIVE_HBASE_CREATE_TABLE_TEMPLATE`)被引用,其余 18 个零 import | 整个文件删除;连带废弃下一条 |
|
|
|
|
|
-| `MySQLReader.generate_hive_ddl()` / `generate_hive_over_hbase_ddl()` 自动建表 DDL 路径 | `dw_base/datax/plugins/reader/mysql_reader.py:195/222`,被 `bin/datax-gc-generator.py:616/728` 调用;且 `conf/template/` 目录在新项目根本不存在,真调用会 FileNotFoundError | 整段路径废弃——与 CLAUDE.md 约定的 `manual/ddl/` 是 DDL 唯一来源相冲突。`datax-gc-generator.py` 仅生成 ini 配置,不再输出 CREATE TABLE DDL;DDL 由开发者按 `21-命名规范.md` 手写到 `manual/ddl/` |
|
|
|
|
|
|
|
+| `dw_base/common/template_constants.py` 大量死代码 | 定义了 20+ 个 SQL 模板路径常量,实际只有 2 个(`MYSQL_HIVE_CREATE_TABLE_TEMPLATE` / `MYSQL_HIVE_HBASE_CREATE_TABLE_TEMPLATE`)被引用,其余 18 个零 import | 整个文件删除;连带废弃下一条 ✅ 2026-04-29 整文件删 |
|
|
|
|
|
+| `MySQLReader.generate_hive_ddl()` / `generate_hive_over_hbase_ddl()` 自动建表 DDL 路径 | `dw_base/datax/plugins/reader/mysql_reader.py:195/222`,被 `bin/datax-gc-generator.py:616/728` 调用;且 `conf/template/` 目录在新项目根本不存在,真调用会 FileNotFoundError | 整段路径废弃——与 CLAUDE.md 约定的 `manual/ddl/` 是 DDL 唯一来源相冲突。`datax-gc-generator.py` 仅生成 ini 配置,不再输出 CREATE TABLE DDL;DDL 由开发者按 `21-命名规范.md` 手写到 `manual/ddl/` ✅ 2026-04-29 两方法删 |
|
|
|
| 缺少集中的开发者参考模板目录 | —(新增) | 已建 `conf/templates/{datax/{datasource,sync},spark/{sql,ddl}}/`,模板用 `*.template.{ini,sql}` 双扩展名。与上条废弃的运行时模板完全不同:这里的模板不被任何代码读取,只供开发者对照写新文件;入口见 `kb/30-开发规范.md §6` |
|
|
| 缺少集中的开发者参考模板目录 | —(新增) | 已建 `conf/templates/{datax/{datasource,sync},spark/{sql,ddl}}/`,模板用 `*.template.{ini,sql}` 双扩展名。与上条废弃的运行时模板完全不同:这里的模板不被任何代码读取,只供开发者对照写新文件;入口见 `kb/30-开发规范.md §6` |
|
|
|
|
|
|
|
|
### 2.2 建议的配置结构
|
|
### 2.2 建议的配置结构
|
|
@@ -211,7 +211,7 @@ L3 SparkSQL(...) 显式传参 + extra_spark_config + 命令行 -sc
|
|
|
|
|
|
|
|
**第三条命令 `datax-gc-generator`(ini 元生成器)独立保留**:用户已确认。职责是"从 PG 扫 schema 生成 ini 参考模板",和"执行 ini"不是一回事,不收口到上面两条里。详见 §2.7。
|
|
**第三条命令 `datax-gc-generator`(ini 元生成器)独立保留**:用户已确认。职责是"从 PG 扫 schema 生成 ini 参考模板",和"执行 ini"不是一回事,不收口到上面两条里。详见 §2.7。
|
|
|
|
|
|
|
|
-### 2.7 `datax-gc-generator` 从零重写(中优先级)
|
|
|
|
|
|
|
+### 2.7 `datax-gc-generator` 从零重写 ✅ 2026-04-29
|
|
|
|
|
|
|
|
**现状**(凭查证 2026-04-18):`bin/datax-gc-generator.py` 支持 `from ∈ {mysql, hdfs}` × `to ∈ {elasticsearch, hbase, hdfs, kafka, mongo, mysql}`,覆盖面大、代码沉重,且:
|
|
**现状**(凭查证 2026-04-18):`bin/datax-gc-generator.py` 支持 `from ∈ {mysql, hdfs}` × `to ∈ {elasticsearch, hbase, hdfs, kafka, mongo, mysql}`,覆盖面大、代码沉重,且:
|
|
|
|
|
|
|
@@ -221,7 +221,7 @@ L3 SparkSQL(...) 显式传参 + extra_spark_config + 命令行 -sc
|
|
|
|
|
|
|
|
**定位**:**参考模板生成器**,不是"一键出可用 ini"。产物是开发者人工调整的起点 —— 常见修改包括字段剪裁(只同步用到的列)、WHERE 过滤条件、hivePartitions 配置、大表拆分策略等。开发者 diff 参考模板和自己的需求,改完再把成品 ini 提交到 `jobs/raw/{domain}/`。
|
|
**定位**:**参考模板生成器**,不是"一键出可用 ini"。产物是开发者人工调整的起点 —— 常见修改包括字段剪裁(只同步用到的列)、WHERE 过滤条件、hivePartitions 配置、大表拆分策略等。开发者 diff 参考模板和自己的需求,改完再把成品 ini 提交到 `jobs/raw/{domain}/`。
|
|
|
|
|
|
|
|
-**方向**:整个文件废弃 + 从零重写(凭记忆:未完全定稿,待真正开始写代码时再细化)
|
|
|
|
|
|
|
+**方向**:整个文件废弃 + 从零重写 ✅ 2026-04-29 重写为 `bin/datax-sync-template-gen.py`(PG → HDFS sync 模板生成器,全字段参考模板,pg8000 直连查 schema,-o 三态:stdout / workspace 默认 / 自定义目录)
|
|
|
|
|
|
|
|
**重写目标**:
|
|
**重写目标**:
|
|
|
- 仅支持 `from=pg to=hdfs`
|
|
- 仅支持 `from=pg to=hdfs`
|
|
@@ -234,12 +234,12 @@ L3 SparkSQL(...) 显式传参 + extra_spark_config + 命令行 -sc
|
|
|
- `workspace/{yyyymmdd}/` 按运行日期分子目录,便于开发者看"我今天生成了哪些候选"
|
|
- `workspace/{yyyymmdd}/` 按运行日期分子目录,便于开发者看"我今天生成了哪些候选"
|
|
|
- 与 `manual/imports/{yyyymmdd}/` 的分工:`manual/imports/` 放一次性**执行**的 SQL / ini(会入仓做审计证据,执行完归档),`workspace/` 放自动化工具**未经人工确认**的中间产物(永不入仓)
|
|
- 与 `manual/imports/{yyyymmdd}/` 的分工:`manual/imports/` 放一次性**执行**的 SQL / ini(会入仓做审计证据,执行完归档),`workspace/` 放自动化工具**未经人工确认**的中间产物(永不入仓)
|
|
|
|
|
|
|
|
-**拆除清单**(重写时连带删除):
|
|
|
|
|
-- `dw_base/database/mysql_utils.py` 的 `list_tables` / `list_columns` 方法(只服务老 generator)
|
|
|
|
|
-- `dw_base/datax/datasources/mysql_data_source.py`
|
|
|
|
|
-- `dw_base/datax/plugins/reader/mysql_reader.py` 的 `generate_hive_ddl` / `generate_hive_over_hbase_ddl` 方法
|
|
|
|
|
-- `dw_base/datax/datax_utils.py` 的 `convert_mysql_column_types`
|
|
|
|
|
-- 所有 mongo / kafka / hbase writer 在 generator 里的分支
|
|
|
|
|
|
|
+**拆除清单**(实际执行时 scope 收紧——mysql 整体作为运行时同步代码保留,仅删纯 generator 死代码):
|
|
|
|
|
+- `dw_base/database/mysql_utils.py` 的 `list_tables` / `list_columns` 方法 ✅ 整 `database/` 目录已于 2026-04-20 老业务批清理删除
|
|
|
|
|
+- ~~`dw_base/datax/datasources/mysql_data_source.py`~~ **保留**(mysql 同步运行时 DataSource,与 PostgreSQLDataSource 同等地位;未来 mysql 同步可能用)
|
|
|
|
|
+- `dw_base/datax/plugins/reader/mysql_reader.py` 的 `generate_hive_ddl` / `generate_hive_over_hbase_ddl` 方法 ✅ 2026-04-29 删
|
|
|
|
|
+- `dw_base/datax/datax_utils.py` 的 `convert_mysql_column_types` ✅ 2026-04-29 整文件删(零外部引用)
|
|
|
|
|
+- 所有 mongo / kafka / hbase writer 在 generator 里的分支 ✅ 2026-04-29 随 generator 整文件删
|
|
|
|
|
|
|
|
**注意**:以上删除范围与 `dw_base/datax/plugins/` 里仍在被真实采集任务调用的 reader/writer 不冲突 —— 真实采集任务只用到 `HDFSReader` / `HDFSWriter` / `MongoWriter`(如果还有 mongo 采集任务)。删之前要用 `grep -r "from dw_base.datax.plugins.reader.mysql_reader"` 再确认一次。
|
|
**注意**:以上删除范围与 `dw_base/datax/plugins/` 里仍在被真实采集任务调用的 reader/writer 不冲突 —— 真实采集任务只用到 `HDFSReader` / `HDFSWriter` / `MongoWriter`(如果还有 mongo 采集任务)。删之前要用 `grep -r "from dw_base.datax.plugins.reader.mysql_reader"` 再确认一次。
|
|
|
|
|
|