|
| 1 | +# language: zh-CN |
| 2 | +功能: Spark引擎支持设置executor参数 |
| 3 | + 为Linkis Spark引擎增加executor端参数设置能力,支持开关控制和参数排除 |
| 4 | + |
| 5 | + 背景: |
| 6 | + 配置文件位置为: linkis-engineconn.properties |
| 7 | + 集成位置为: SparkEngineConnExecutor.executeLine方法的sc.setJobGroup之后 |
| 8 | + |
| 9 | + 场景1: 功能开关关闭时,不执行任何参数设置 |
| 10 | + 假设 功能开关配置为: wds.linkis.spark.executor.params.enabled=false |
| 11 | + 当 用户执行Spark代码 |
| 12 | + 那么 不执行任何参数设置操作 |
| 13 | + 并且 日志记录禁用状态信息 |
| 14 | + |
| 15 | + 场景2: 功能开关开启时,正确设置所有Spark参数到executor端 |
| 16 | + 假设 功能开关配置为: wds.linkis.spark.executor.params.enabled=true |
| 17 | + 并且 排除参数配置为: wds.linkis.spark.executor.params.exclude= |
| 18 | + 当 用户执行Spark代码 |
| 19 | + 那么 遍历所有Spark参数 |
| 20 | + 并且 通过sc.setLocalProperty设置每个参数到executor端 |
| 21 | + 并且 日志记录设置的参数总数 |
| 22 | + |
| 23 | + 场景3: 配置排除参数时,排除的参数不会被设置 |
| 24 | + 假设 功能开关配置为: wds.linkis.spark.executor.params.enabled=true |
| 25 | + 并且 排除参数配置为: wds.linkis.spark.executor.params.exclude=spark.sql.shuffle.partitions,spark.dynamicAllocation.maxExecutors |
| 26 | + 当 用户执行Spark代码 |
| 27 | + 那么 spark.sql.shuffle.partitions参数不会被设置 |
| 28 | + 并且 spark.dynamicAllocation.maxExecutors参数不会被设置 |
| 29 | + 并且 其他正常参数会被设置 |
| 30 | + 并且 日志记录排除的参数数量 |
| 31 | + |
| 32 | + 场景4: 参数设置失败时,记录WARNING日志并继续执行 |
| 33 | + 假设 功能开关配置为: wds.linkis.spark.executor.params.enabled=true |
| 34 | + 并且 存在无效的Spark参数名称 |
| 35 | + 当 参数设置过程中遇到异常 |
| 36 | + 那么 记录WARNING级别日志,包含参数key和异常信息 |
| 37 | + 并且 继续设置下一个参数 |
| 38 | + 并且 不影响Spark作业正常执行 |
| 39 | + |
| 40 | + 场景5: 使用默认配置时,功能关闭不影响现有功能 |
| 41 | + 当 用户不配置任何executor参数相关配置 |
| 42 | + 那么 使用默认配置: wds.linkis.spark.executor.params.enabled=false |
| 43 | + 并且 不执行任何参数设置 |
| 44 | + 并且 与现有Spark行为完全一致 |
| 45 | + |
| 46 | + 场景6: 验证参数设置在sc.setJobGroup后执行 |
| 47 | + 当 用户执行Spark代码 |
| 48 | + 那么 executeLine方法执行流程为: |
| 49 | + | 步骤 | 操作 | |
| 50 | + | 1.0 | 调用Pre-Execution Hook | |
| 51 | + | 2.0 | 设置JobGroup: sc.setJobGroup(jobGroup, _code, true) | |
| 52 | + | 3.0 | 设置Driver参数: setSparkDriverParams(sc) | <-- 新增 | |
| 53 | + | 4.0 | 执行实际代码: runCode(...) | |
| 54 | + | 5.0 | 调用Post-Execution Hook | |
0 commit comments