You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pentaho并行作业Spoon运行正常,bat执行启动后无后续输出求助

Pentaho并行作业通过Kitchen.bat执行停滞问题排查思路

我有一个包含5个并行子作业(Test1至Test5)的Pentaho作业,在Spoon图形界面中运行完全正常,但通过bat脚本调用Kitchen.bat执行时,日志显示成功启动所有并行子作业后就停止输出,作业陷入停滞状态。

我的bat脚本:

@echo off

call D:\Pentaho\Kitchen.bat /rep:git1 /dir:TestCase/Samples/example /job:Job_1 "/param:ENV=PROD" "/param:SOURCE=MAIN" "/param:path= D:\GIT_TESTS\pentaho\xlsx\MAIN" >> "D:\GIT _TESTS\ pentaho\xlsx\Logs\log_Job_1.log"
EXIT

@echo on

关键执行日志片段:

2022/11/04 22:31:01 - Job_1 - Starting entry [Test1]
2022/11/04 22:31:01 - Job_1 - Launched job entry [Test1] in parallel.
2022/11/04 22:31:01 - Job_1 - Starting entry [Test2]
2022/11/04 22:31:01 - Job_1 - Launched job entry [Test2] in parallel.
2022/11/04 22:31:01 - Job_1 - Starting entry [Test3]
2022/11/04 22:31:01 - Job_1 - Launched job entry [Test3] in parallel.
2022/11/04 22:31:01 - Job_1 - Starting entry [Test4]
2022/11/04 22:31:01 - Job_1 - Launched job entry [Test4] in parallel.
2022/11/04 22:31:01 - Job_1 - Starting entry [Test5]
2022/11/04 22:31:01 - Job_1 - Launched job entry [Test5] in parallel.

排查解决思路:

  • 开启详细日志定位子作业状态
    Kitchen.bat默认只输出主作业日志,子作业的执行细节不会显示。修改脚本添加-level:DEBUG参数,强制输出全量日志,就能看到子作业是在运行还是卡在某个节点:

    call D:\Pentaho\Kitchen.bat /rep:git1 /dir:TestCase/Samples/example /job:Job_1 "/param:ENV=PROD" "/param:SOURCE=MAIN" "/param:path=D:\GIT_TESTS\pentaho\xlsx\MAIN" -level:DEBUG >> "D:\GIT _TESTS\ pentaho\xlsx\Logs\log_Job_1.log"
    
  • 修正环境变量与路径问题
    Spoon和命令行的运行上下文存在差异,容易导致配置或路径异常:

    • 手动指定KETTLE_HOME:脚本中当前-DKETTLE_HOME=是空的,添加用户的Kettle配置目录(比如-DKETTLE_HOME=C:\Users\USR_TST\.kettle),确保子作业能读取正确的数据库连接配置。
    • 清理路径参数空格:原脚本中path参数值开头有空格(path= D:\...),虽然日志里显示被自动移除,但可能引发解析问题,直接改为"/param:path=D:\GIT_TESTS\pentaho\xlsx\MAIN"。
    • 切换工作目录:在调用Kitchen.bat前添加cd D:\Pentaho,确保作业依赖的相对路径能正确识别。
  • 调整资源限制
    5个并行作业同时运行可能耗尽JVM或系统资源:

    • 增大JVM内存:当前-Xmx4096m是4G,可尝试提升到-Xmx8192m,同时将Java 8已废弃的MaxPermSize改为-XX:MaxMetaspaceSize=512m,直接在脚本中指定参数:
      call D:\Pentaho\Kitchen.bat /rep:git1 /dir:TestCase/Samples/example /job:Job_1 "/param:ENV=PROD" "/param:SOURCE=MAIN" "/param:path=D:\GIT_TESTS\pentaho\xlsx\MAIN" "-Xmx8192m" "-XX:MaxMetaspaceSize=512m" >> "D:\GIT _TESTS\ pentaho\xlsx\Logs\log_Job_1.log"
      
    • 监控系统资源:打开任务管理器查看CPU、内存、磁盘IO占用,确认是否有资源瓶颈导致作业停滞。
  • 排查子作业的非交互逻辑
    命令行环境不支持图形交互,子作业中如果有依赖界面的步骤会直接卡住:

    • 确保所有数据库连接都通过配置文件或参数传递密码,没有弹窗输入的情况。
    • 检查子作业是否包含需要用户确认的弹窗步骤,替换为非交互的自动处理逻辑。
  • 单独测试子作业
    用Kitchen.bat单独运行每个Test子作业,确认是否能正常完成:

    call D:\Pentaho\Kitchen.bat /rep:git1 /dir:TestCase/Samples/example /job:Test1 "/param:ENV=PROD" "/param:SOURCE=MAIN" "/param:path=D:\GIT_TESTS\pentaho\xlsx\MAIN" >> "D:\GIT _TESTS\ pentaho\xlsx\Logs\log_Test1.log"
    

    如果某个子作业单独运行也卡住,说明问题出在该子作业本身,和并行逻辑无关。

内容的提问来源于stack exchange,提问作者Jan Pietruszka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 12:30:58