Parameters 从命令行启动时无法覆盖Talend作业上下文参数

Parameters 从命令行启动时无法覆盖Talend作业上下文参数,parameters,etl,talend,data-integration,Parameters,Etl,Talend,Data Integration,我当前正在尝试从命令行运行Talend作业。由于我的生产环境参数与我在本地工作站上的参数不同,因此在目标服务器上启动作业时,我必须提供上下文参数: kaffein@coffeeshop:~$ ./job_run.sh --context_param port=1234 --context_param server=myserver 但是,当我导出作业时,Talend Open Studio(用于数据集成)为我的所有子对象文件夹生成了Default.properties文件。这些文件包含我的本地

我当前正在尝试从命令行运行Talend作业。由于我的生产环境参数与我在本地工作站上的参数不同,因此在目标服务器上启动作业时,我必须提供上下文参数:

kaffein@coffeeshop:~$ ./job_run.sh --context_param port=1234 --context_param server=myserver
但是,当我导出作业时,Talend Open Studio(用于数据集成)为我的所有子对象文件夹生成了Default.properties文件。这些文件包含我的本地默认上下文参数

使用生产参数(如上所示)启动我的作业失败,因为提供的命令行参数(--context_param参数)似乎无法覆盖“local”参数


有人能帮我解决这个问题吗?

项目设置中的
作业设置下使用
隐式上下文加载
可能更容易

在这里,您可以定义环境参数(如连接设置)的文件(如CSV),只要它们共享相同的文件路径,您就可以将不同的上下文变量放在不同环境的文件中,并让Talend将其作为作业的一部分加载


现在,当您运行作业时,它应该使用环境特定的上下文变量,因为它们是从文件加载的。

如果您有诸如DEV、UAT、PROD等上下文组,您可以在shell脚本中设置此参数-因此,如果您想要PROD,您可以将此参数添加到shell中

--context=PROD

这将从PROD上下文属性文件加载PROD参数,在每次生成时,我们都会修改所有shell脚本,添加一个检查,以确定它所处的环境,然后在正确的上下文中传递。

我遇到了类似的问题,也选中了传播复选框,但后来发现了此问题

将参数传递给子作业

在结构化应用程序中,一个作业可以调用另一个作业,并且 必须将参数传输到子作业。在Talend开放工作室 这项任务很容易。创建子作业时(即调用 另一个作业)只需单击其组件选项卡,并确保 检查整个上下文

请注意,组件标记存在于父作业中

我在这里找到了解决办法

为我工作


Rob

您是否使用tRunJob组件调用Subbobs?如果是,请确保选中该复选框以将整个上下文变量传播到子对象。否则,默认的子对象上下文将为used@JulienBoulay谢谢,但是我在构建作业时已经选中了此复选框。我认为它也会将上下文传播到子作业中。但它并不是这样工作的。到目前为止,我所做的是在Default.properties文件中硬编码参数。显然,这不是最好的方法,因为它涉及大量样板文件的复制/粘贴。这样使用它要容易得多。为了澄清,格式是
键,值
,其中逗号
是可选的分隔符。第一次尝试正确处理这个问题,因为它上面有一些强大的缓存,如果以后更改它,很难让它传播。