【问题标题】:Pentaho Kitchen Parameters not Being Passed Through to Pentaho JobPentaho Kitchen 参数未传递给 Pentaho Job
【发布时间】:2019-01-25 17:54:47
【问题描述】:

使用 Pentaho Kitchen 运行 Spoon / PDI 作业。在主作业中定义应在运行时由 Kitchen 参数设置的参数。在 Windows 下运行。以下方法不起作用:

C:\pentaho8.0\data-integration\kitchen /file:"C:\Users\nbessmer\Source\Professional_Services_New\Client Implementations\BlackBaud\Rapid7CodeDrop2\NexposeLoadStripped.kjb"
 "-param:HelperFiles=C:\Users\nbessmer\Source\Professional_Services\Rapid7\Output" "-param:InputDirectory=C:\Users\nbessmer\Source
\Professional_Services\Rapid7" "-param:OutputDirectory=C:\Users\nbessmer\Source\Professional_Services\Rapid7\Output\Nexpose" "-param:ReportFile=report.csv" "-param:Root=C:\Users\nbessmer\Source\Professional_Services\Rapid7" 

即使尝试了这个非常简单的工作,也无法在 Kitchen 中获取参数。

感谢您的帮助。

这也不起作用:

C:\pentaho8.0\data-integration\kitchen 
/file:"C:\Users\NBessmer\Source\Professional_Services_New\Client 
Implementations\MIS\Spoon\IP Phones\IP_Phones.kjb" 
"-param:InputDirectory=C:/Users/NBessmer/Source/Professional_Services_New/Client Implementations/MIS/Spoon/IP Phones" 
"-param:InputFile=C:/Users/NBessmer/Source/Professional_Services_New/Client Implementations/MIS/Spoon/IP Phones/IPT Devices-(Nov-29-2018).xlsx
"-param:MashupDirectory=C:/Users/NBessmer/Source/Professional_Services_New/Client Implementations/MIS/Spoon/IP Phones/mashup"
"-param:OutputDirectory=C:/Users/NBessmer/Source/Professional_Services_New/Client Implementations/MIS/Spoon/IP Phones/output"     

在路径名中使用正斜杠时。获取错误:无法从“file:///C:/NoAnalogPhones.csv”读取,因为它不是文件。

【问题讨论】:

  • 在带引号的 ("-param: ...") 参数中尝试使用正斜杠“/”而不是反斜杠“\”
  • @CristianCurti - 扭转斜线无效。我在 Kitchen run 中遇到错误:Could not read from "file:///C:/NoAnalogPhones.csv" 因为它不是文件。无法从“file:///C:/NoAnalogPhones.csv”读取,因为它不是文件。在 org.pentaho.di.trans.steps.csvinput.CsvInput.readFieldNamesFromFile(CsvInput.java:439)2019/01/28 12:36:49 - 系统 - 转换正在扼杀其他步骤!在 org.pentaho.di.trans.steps.csvinput.CsvInput.createFieldMapping(CsvInput.java:403) 在 org.pentaho.di.trans.steps.csvinput.CsvInput.openNextFile(CsvInput.java:330)

标签: pentaho pentaho-data-integration


【解决方案1】:

Kitchen 命令行在传递参数时有问题。您必须鬼混并取出任何换行符/新行并在“params:var = someval”之间放置一个空格

这行得通:

CD C:\Pentaho\data-integration

REM C:\pentaho8.0\data-integration\kitchen /file:C:\Users\nbessmer\Source\Professional_Services\Rapid7 customer delivery\NexposeLoad.kjb

.\kitchen /file:"C:\Users\NBessmer\Source\Professional_Services_New\Client Implementations\MIS\Spoon\IP Phones\IP_PHONES\testParms.kjb" "-param:InputFile=C:\Users\NBessmer\ Source\Professional_Services_New\Client Implementations\MIS\Spoon\IP Phones\IP_PHONES(Nov-29-2018).xlsx" "-param:OutputDirectory=C:Users\NBessmer\Source\Professional_Services_New\Client Implementations\MIS\Spoon\IP_Phones\ IP_PHONES\output" "-param:InputDirectory=C:\Users\NBessmer\Source\Professional_Services_New\Client Implementations\MIS\Spoon\IP Phones\IP_PHONES"

CD C:\Users\NBessmer\Source\Professional_Services_New\Client Implementations\MIS\Spoon\IP Phones\IP_PHONES

【讨论】:

    【解决方案2】:

    这可能只是您的命令拼写错误,您使用的是 C:\pentaho8.0\data-integration\kitchen ...批处理文件的实际名称是 Kitchen,大写 K。

    尝试使用此命令:

    C:\pentaho8.0\data-integration\Kitchen.bat

    而不是小写。

    编辑:

    在您的 KJB 中,在 KTR 调用步骤中,如果您在“参数”选项卡中设置了参数,则需要向其提供信息(值)或从流列接收值,如果您保持原样,我很确定转换将在这些参数空白/空的情况下运行,因此除非您需要静态值或“每行执行”类型的执行,否则将“参数”选项卡全部留空。

    此外,在 KTR 内的参数选项卡中,除非 KTR 将通过 JOB 调用接收参数,否则您可以将参数全部留空,选项“将所有参数值传递给子转换”将发送下至 KTR 执行的所有 JOB 参数。

    在你的批处理文件中,只要你从 C:\pentaho8.0\data-integration\kitchen 里面执行这个批处理文件就可以了,但是如果你从另一个文件夹执行,你需要使批处理文件先到那里,所以在开头添加这个:

    C: cd C:\pentaho8.0\data-integration\

    Kitchen.bat /file:....

    暂时能想到的就这些了。

    【讨论】:

    • 我在窗户下跑……把厨房改成大写 厨房没什么区别。厨房仍在运行,但失败了。
    • 您能否寄一份您的 KJB 和 KTR 样本,以便我仔细查看并测试它?
    • Cristian - 如何将示例 KJB 和 KTR 附加到此线程?
    • 您可以编辑您的问题,添加包含整个 KTR 的代码示例或引用块(在 Notepad++ 或类似工具中打开您的 KTR 文件)。或者您可以压缩文件并上传到某处并分享链接。
    • 编辑了我的答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多