我需要参数化我的水壶作业和转换中的所有变量(这些作业将在AWS中运行,所有参数都作为环境变量传递)。
作业及其附属转换中的连接、路径和各种其他参数使用${SOURCE_DB_PASSWORD},${OUTPUT_DIRECTORY}样式。
当我在Data Integration 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
发布于 2018-09-04 07:52:04
在命令行上使用-param:SOURCE_DB_HOST=value
语法,在作业和转换中使用${SOURCE_DB_HOST}
语法是正确的方法。
在转换中您需要做的(但不是对于它所显示的作业)是显式地向参数添加到转换属性(-T或on mac -T在转换工作区中)。附加屏幕截图。
然后直接从shell脚本运行作业或转换。
发布于 2018-09-03 16:11:32
也许问题不是由参数引起的,而是由Table输入引起的。你能检查一下Replace variables in script
是否被选中了吗?
发布于 2019-03-14 00:17:58
我只是在试着让这些东西正常工作。只有在作业规范中指定参数,然后显式地将它们向下传递给任何需要它们的转换时,-param (或/param)命令行标志才会起作用。
要在我使用的作业中获得普遍可访问的系统属性,请执行以下操作:
set "OPT=-Dname1=value -Dname2=value"
在打电话给厨房之前。这会将-D标志放入java选项中。希望这将与数据库规范一起工作。
当然,您可以将它们放在kettle.properties中,但如果您想在不同的环境中运行,就会变得混乱。
https://stackoverflow.com/questions/52145028
复制相似问题