|
|
@@ -13,7 +13,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 |
|
|
|
+| **C** | `bin/` 入口收口 | `datax-import` / `datax-export` 两命令收口 · `datax-gc-generator` 从零重写 · `csv-to-hdfs-starter` 实现 | 阶段 1 尾 + 阶段 2 |
|
|
|
| **D** | 基础设施 | `tests/` 测试体系 · 告警模块重写 · 日志模块统一 · `dq/` 数据质量 · `wiki/` Docmost · `pm/` 项目管理集成 | 阶段 2 / 4 |
|
|
|
| **F** | 老代码删除 | `launch-pad/` 整删 · 其他已确认废弃 | 阶段 5 |
|
|
|
|
|
|
@@ -174,19 +174,28 @@ L3 SparkSQL(...) 显式传参 + extra_spark_config + 命令行 -sc
|
|
|
- `bin/datax-job-config-generator.py` — ini → json 翻译器(内部工具)
|
|
|
- `bin/datax-gc-generator.py` — ini 元生成器(详见 §2.7)
|
|
|
|
|
|
-**目标态**:顶层收成两个命令,每个命令内部吃 single / batch 两种输入形态;底层的 json 翻译 / worker 选择 / 日志路径由公共模块承担,调用方不感知。
|
|
|
+**目标态**:顶层收成两个命令,命名锁定 `bin/datax-hive-import-starter.sh` / `bin/datax-hdfs-export-starter.sh`(对齐现有 `spark-sql-starter` / `datax-*-starter` 命名风格);参数按老入口一比一平迁、不引入新能力;底层 worker 选择 / 日志路径 / json 翻译下沉到 `dw_base/datax/` 包内,调用方不感知。
|
|
|
|
|
|
-| 顶层命令 | 语义 | 关键参数 |
|
|
|
+| 顶层命令 | 语义 | 参数集(老入口平迁) |
|
|
|
|---|---|---|
|
|
|
-| **`bin/datax-import`**(命名待确认) | 导入到 Hive(目标侧带分区管理) | `-ini <file>` 单 ini · `-inis <dir>` 批量 · `-dt <yyyymmdd>` 指定分区 · `-start-date / -stop-date` 日期范围展开 · `-skip-exist` 默认开,已存在分区跳过 · `-force-overwrite` 强制覆盖 · `-skip-partitions <csv>` 手动跳过特定分区 · `-env <dev\|test\|prod>` |
|
|
|
-| **`bin/datax-export`**(命名待确认) | 从 Hive/HDFS 导出到外部系统(源侧带路径探测) | `-ini / -inis` 同上 · `-src-check`(默认 fail-fast)· `-skip-missing` 源路径缺失时跳过不报错 · `-dt / -start-date / -stop-date` · `-env` |
|
|
|
+| **`bin/datax-hive-import-starter.sh`** | 目标=Hive(reader=外部 / writer=hdfs + 自动分区),对应 `jobs/raw/` | `-ini <file>` 单 ini · `-inis <dir>` 目录批量 · `-start-date / -stop-date` · `-host / -random` · `-parallel` · `-skip-datax` · `-skip-partition`(默认开启分区管理)· `-t <db.table>` 显式追加需建分区的表 |
|
|
|
+| **`bin/datax-hdfs-export-starter.sh`** | 源=HDFS(reader=hdfs / writer=外部如 ES/Mongo/MySQL/Kafka),对应 `jobs/ads/` | 同上减 `-skip-partition` / `-t`;源路径存在性 check 沿用老 `check_data_exists` 默认 fail-fast 行为,不暴露开关 |
|
|
|
+
|
|
|
+**老参数不平迁**(新入口移除):
|
|
|
+
|
|
|
+- `-c / -cd / -jc / -jcd`:json 输入形态不再对外暴露,入口自动调 ini→json 翻译
|
|
|
+- `--override` + 5 个脚本内 `xxx_array=()`(`partitioned_tables` 等):数组在老 `datax-multiple-hive-job-starter.sh` 中本就是未激活的空壳(2026-04-23 查证),一并删除
|
|
|
|
|
|
**实现建议**:
|
|
|
|
|
|
-1. 把老脚本 worker 选择、日志路径、json 翻译提到 Python 模块 `dw_base/datax/entry.py`,两个 sh 只做参数解析 + 调用
|
|
|
-2. 分区检查:`datax-import` 在执行前 `SHOW PARTITIONS` 目标表 → 命中则按 `-skip-exist` / `-force-overwrite` 决策;`datax-export` 在执行前 `hdfs dfs -test -e <源路径>` → 不存在按 `-src-check` / `-skip-missing` 决策
|
|
|
-3. `-inis` 的批量展开规则:传目录则递归扫 `.ini` 文件,传文件列表(`jobs.list`)则读文件每行一个 ini
|
|
|
-4. 老脚本 `datax-single-job-starter.sh` / `datax-multiple-*-starter.sh` 在两个新命令稳定后整体删除,保留一期转发封装作为兼容
|
|
|
+1. 新增 `dw_base/datax/{entry,runner,batch,worker,partition,path_utils}.py` 6 个模块,把老 shell 脚本里的 worker 选择 / 批量展开 / 日志路径派生 / ini→json 翻译 / Hive 分区管理逻辑全部搬迁,两个 sh 只做 bash 环境初始化 + 参数解析 + 调 python
|
|
|
+2. 模块放 `dw_base/datax/` 包内,不横跨 `io/` / `utils/` —— **放宽聚簇 B2 前置**(四模块边界定稿前先落地)。等 B2 定稿后,`path_utils.log_path` 等纯函数、`worker.ssh_run` 中跨包部分再挪到 `dw_base/utils/` / `dw_base/io/`,只改 import 路径
|
|
|
+3. `-inis <dir>` 目录扫描只递归 `.ini` 文件
|
|
|
+4. 老脚本 `datax-{single,multiple,multiple-hive}-job-starter.{sh,py}` + `datax-job-config-generator.py` 在冒烟 2(新入口端到端通过)后整体删,**不保留兼容转发封装**
|
|
|
+
|
|
|
+**本轮不做、后延 ADR**:下列能力属新增需求、非老入口平迁,暂不实现;若将来出现明确场景,单独开 ADR 落 `kb/93`:
|
|
|
+
|
|
|
+- 日期范围自动按日展开 + N 个 json 分发多 worker(`-start-date 20260401 -stop-date 20260410` → 自动切 10 份 json,每份独立选 worker)
|
|
|
|
|
|
**第三条命令 `datax-gc-generator`(ini 元生成器)独立保留**:用户已确认。职责是"从 PG 扫 schema 生成 ini 参考模板",和"执行 ini"不是一回事,不收口到上面两条里。详见 §2.7。
|
|
|
|
|
|
@@ -640,3 +649,9 @@ else:
|
|
|
- C `bin/` 两命令 / `datax-gc-generator` 重写 ← B2 + A datax
|
|
|
- D `ops/` 下两个工具 ← B2
|
|
|
- F `launch-pad/` 整删 ← 新业务 SQL 生产稳定一个完整周期(新业务开发本身不属于重构 scope)
|
|
|
+
|
|
|
+## 九、待讨论议题
|
|
|
+
|
|
|
+以下议题已登记为未来专题讨论对象,暂不展开、不纳入聚簇推进:
|
|
|
+
|
|
|
+- **分布式任务分发**:DolphinScheduler worker 分发机制 × 新入口 `dw_base/datax/` 内部实现(worker 选择 / 批量展开 / 日志路径 / ssh 并发)的交互关系。
|