将上下文变量从unix shell传递到父作业,然后在作业之间传递

时间:2018-07-26 07:37:58

标签: shell unix bigdata etl talend

我有一个要求。我试图将在Talend(name = nomeFile,value = context.nome_file)中定义的上下文变量从unix传递到myParent Job,然后在我的工作之间传递它。在这种情况下,必须从mainALF中读取变量并将其传递给subLoad_Alf。我同时开发了ParentJob和ChildJob,然后构建了myParentJob。此时,从unix终端,我编写了以下命令:

./ myParentJob.sh --context_param nomeFile =“ myDirectory / FileName.txt”,我无法正常工作。我得到“没有这样的文件或目录”。

这是我的主要工作(myParentJob):

enter image description here

相反,如果我构建myChildJob(subLoad_Alf)并运行相同的命令:./myChildJob.sh --context_param nomeFile =“ myDirectory / FileName.txt”,则它可以正常工作。

我认为我无法读取ParentJob中的上下文变量(nomeFile)并将其值(“ myDirectory / FileName.txt”)发送给myChildJob。 这是我的childJob配置:

enter image description here enter image description here

有人可以帮助我弄清楚如何实现此要求吗? 预先谢谢你

1 个答案:

答案 0 :(得分:1)

问题在于,将nomeFile上下文变量传递给子作业时,您将对其进行覆盖。
您用于覆盖上下文变量的全局变量(globalMap.get("context.nomeFile"))不存在,因此将空context.nomeFile传递给您的子作业。
在子作业的tRunJob上选中“传输整个上下文”将有助于传递已传递给父作业的nomeFile。您不需要为该上下文变量明确指定一个值,因此您需要将其从上下文参数表中删除。