我目前正在尝试从命令行运行Talend作业。由于我的生产环境参数与我在本地工作站上的参数不同,因此在目标服务器上启动作业时,我必须提供上下文参数:
kaffein@coffeeshop:~$ ./job_run.sh --context_param port=1234 --context_param server=myserver
当我导出作业时,Talend Open Studio(用于数据集成)为我的所有子作业文件夹生成 Default.properties 文件。这些文件包含本地默认上下文参数。
使用生产参数启动我的工作(如上所示)然后失败,因为似乎“local”参数不能被提供的命令行参数(--context_param arguments)覆盖。
有人可以帮我解决这个问题吗?
答案 0 :(得分:2)
在Implicit context load
的{{1}}下使用Job Settings
可能更容易。
在这里,您可以定义环境参数(如连接设置)的文件(例如CSV),只要它们共享相同的文件路径,您就可以将不同的上下文变量放在不同环境的文件中,并且Talend将它们作为工作的一部分加载。
现在,当您运行作业时,它应该使用从文件加载的特定于环境的上下文变量。
答案 1 :(得分:1)
如果您有DEV,UAT,PROD等上下文组,您可以在shell脚本中设置此参数 - 所以如果您想要PROD,您可以将此参数添加到您的shell
--context=PROD
这将从您的PROD上下文属性文件中加载您的PROD参数,在我们修改了所有shell脚本的每个构建中,添加一个检查以确定它所处的环境,然后传递正确的上下文。
答案 2 :(得分:1)
我有类似的问题,也选中了复选框进行传播,但后来发现了这个
将参数传递给子作业
在结构化应用程序中,Job可以调用另一个Job,它就是 将参数传输到子作业所必需的。在Talend Open Studio 这个任务很简单。当您创建子作业时(即调用的作业) 另一项工作)只需单击其组件选项卡并确保传输 检查整个上下文。
请注意,组件标记存在于父JOB中。
我在这里找到了解决方案http://www.robertomarchetto.com/how_to_parameter_values_talend_job_command_line
为我工作。
罗布