|
|
| 2026-04-21 | **聚簇 A.4 Spark 参数外配 + `spark_sql.py` 三级覆盖**:按业务调整频率拆两文件入库 —— `conf/spark-defaults.conf`(12 条底层行为/开关类,初始化后少改:`spark.sql.adaptive/broadcastTimeout/codegen/arrow*/files/statistics.*` + `spark.dynamicAllocation.enabled` + `spark.files.ignoreCorruptFiles` + `spark.debug.maxToStringFields` + `spark.port.maxRetries` + `hive.exec.orc.default.block.size`)+ `conf/spark-tuning.conf`(10 条资源/并行度/队列,业务早期常改:`spark.{driver,executor}.{memory,cores}` + `spark.executor.instances` + `spark.executor.memoryOverhead` + `spark.driver.maxResultSize` + `spark.default.parallelism` + `spark.sql.shuffle.partitions` + `spark.yarn.queue`)。`dw_base/spark/spark_sql.py` 改造:(a) 模块级新增 `_load_spark_conf_file(path)`,读 Spark 原生 `key value` 格式,支持 `#` 注释与空行,文件缺失返回 `{}` 容错单测;(b) `__init__` 10 个 tuning 相关构造参数默认值 `'2g' / 200 / ...` → `Optional[...] = None` sentinel,不破坏既有调用点显式传参;(c) `__init_spark_session` 原 22 条硬编码 `.config(...)` 链替换为三段:L1 先 `spark-defaults.conf` 后 `spark-tuning.conf`(相同 key tuning 覆盖 defaults)→ L2 `self._final_spark_config`(SQL 内 SET)→ L3 构造参数非 None 项 + `extra_spark_config`(L3 内 extra 覆盖 named),保持原"extra > SQL SET > named" 的向后兼容;日志分层打 `L1/L2/L3` 前缀便于排查。联动:`kb/90 §2.2` conf 结构加 `spark-tuning.conf` + `§2.3` 改写为两文件模型(去单文件草案)+ 删"坑 2"(B1 → A2 依赖边)+ 聚簇 L59 依赖边删 | — |
|
|
|
+| 2026-04-22 | **conf/templates 按引擎顶层重组 + README 样板段迁入 kb/30 §6**:`conf/templates/{datasource,datax/{raw,ads,manual},sql,ddl}/` → `conf/templates/{datax/{datasource,sync},spark/{sql,ddl}}/`。datasource 挪进 datax/ 匹配其仅服务于 DataX 的事实(Spark 入口只读 Hive,不读 ini);datax/{raw,ads,manual} 三空目录合并为 datax/sync/(kb/21 §3.9 删后三分类在样板层级无意义);sql/ddl 归 spark/ 按执行引擎归属。已备 3 份 datasource ini 随 git mv 挪入 datax/datasource/,头注释不含 conf/templates 字面量不需改。README 原 L111-116 "样板(待补充)"整段删除,替换为一句指向 kb/30 §6 链接;kb/30 新增 §6 开发样板(原 §6 相关文档 → §7);kb/90 §2.1 模板目录行同步更新目录字面量 + 入口从 README 改指 kb/30 §6 | — |
|