【问题标题】:Passing Environment Variables to a Pentaho Kettle Transformation via script通过脚本将环境变量传递给 Pentaho Kettle 转换
【发布时间】:2019-02-08 05:34:11
【问题描述】:

我需要参数化我的水壶作业和转换中的所有变量(作业将在 AWS 中运行,所有参数都作为环境变量传入)。

作业中的连接、路径和各种其他参数及其伴随的转换使用 ${SOURCE_DB_PASSWORD}、${OUTPUT_DIRECTORY} 样式。

当我在数据集成 UI 中将这些设置为环境变量时,它们都可以工作并且作业在 UI 工具中成功运行。当我从 bash 脚本运行它们时:

#!/bin/sh
export SOURCE_DB_HOST=services.db.dev
export SOURCE_DB_PORT=3306

kitchen.sh -param:SOURCE_DB_PORT=$SOURCE_DB_PORT -param:SOURCE_DB_HOST=$SOURCE_DB_HOST -file MY_JOB.kjb

它调用的工作和转换确实选择变量。错误是:

Cannot load connection class because of underlying exception: 'java.lang.NumberFormatException: For input string: "${SOURCE_DB_PORT}"'

因此,在不使用 jndi 文件或kettle.properties 的情况下,我需要某种方式将环境变量映射到 PDI 作业和转换中的参数/变量

[Mac OS X 10.13 上的 PDI 版本 8.1]

【问题讨论】:

  • Windows 还是 linux?
  • 抱歉,问题出现在 Mac OS X 10.13、Java 8 上

标签: pentaho kettle pentaho-spoon pentaho-data-integration


【解决方案1】:

也许问题不是由参数引起的,而是由表格输入引起的。你能检查一下Replace variables in script是否被选中。

【讨论】:

  • 是的,它已被检查。我的查询是:SELECT * FROM ${SOURCE_TABLE} WHERE updated_at > "2018-05-10 00:0:00" and updated_at
【解决方案2】:

使用步骤Get variable,您可以在Table input步骤之前将参数更改为变量(列),而不会忘记指定Insert data from step

由于问题来自类型格式错误,您可能希望通过Write to log 步骤查看 PDI 对变量的看法。

如果数字格式异常仍然存在,请告诉我。

【讨论】:

    【解决方案3】:

    在命令行中使用-param:SOURCE_DB_HOST=value 语法,在作业和转换中使用${SOURCE_DB_HOST} 语法是正确的方法。

    您在转换中需要做的(但不是对于它出现的作业)是显式添加参数到转换属性(control-T 或在转换工作区中的 mac command-T )。附上屏幕截图。

    然后直接从 shell 脚本运行作业或转换。

    【讨论】:

      【解决方案4】:

      这是一个典型的错误,当 pentaho 期望端口号中有一个整数但接收到 s 字符串时。检查你的shell脚本中端口号后面是否有空格

      【讨论】:

        【解决方案5】:

        我一直在努力让这些东西正常工作。 -param(或 /param)命令行标志似乎只有在您在作业规范中指定参数时才有效,然后明确地将它们传递给需要它们的任何转换。

        要获得在我使用的作业中普遍可访问的系统属性:

        set "OPT=-Dname1=value -Dname2=value"
        

        打电话给厨房之前。这会将 -D 标志放入 java 选项中。希望这适用于数据库规范。

        当然你可以把它们放在kettle.properties中,但是如果你想在不同的环境中运行就会变得混乱。

        【讨论】:

          猜你喜欢
          • 2020-09-09
          • 1970-01-01
          • 2018-02-06
          • 2023-03-09
          • 1970-01-01
          • 2020-03-05
          • 2021-06-28
          • 1970-01-01
          • 2021-11-27
          相关资源
          最近更新 更多