【问题标题】:Passing parameters from TAC for job execution从 TAC 传递参数以执行作业
【发布时间】:2014-11-25 02:37:17
【问题描述】:

我的工作非常通用,不同的参数作为上下文参数从不同的文件传递。但我仍然需要“硬编码”上下文 文件名并在 TAC(Talend 管理控制台)中创建多个作业以供执行。我希望做的是使用通用作业并将上下文文件传递给该作业 来自 TAC。然后作为作业执行的一部分,将读取传入的上下文文件并加载上下文。 我的问题是如何实现这一点,基本上是根据执行时间从 TAC 传递不同的上下文文件?

谢谢。

【问题讨论】:

    标签: talend


    【解决方案1】:

    一种方法可能是用多个包装作业包围通用作业,其中包含上下文(或指向适当上下文文件的链接),并将这些上下文变量传递给通用子作业。

    如果您有一些通用功能需要几个不同的工作,但希望将不同的数据传递给它们或希望以不同的方式向它们呈现数据,这将很有效。

    如果您随后更改了通用作业的逻辑,那么您的所有包装作业都会立即使用新逻辑。

    当然,如果您有企业许可证(如果您可以访问 TAC,则可以这样做),一个更好的替代方案是为此目的而设计的作业集,可用于完全更改数据源/目标并保持逻辑分离。

    或者,您可以使用 TAC 按需传递自定义上下文变量。为此,请单击作业指挥中的任务,然后按底部的“上下文参数”按钮(触发器旁边)。在这里你可以硬编码你想要的任何值。

    我倾向于将其用于为大多数运行设置默认上下文变量但偶尔想在运行时进行调整的作业。所以我可能有一个允许过滤我的数据的上下文变量,我将其默认为全部。在运行时,我可以选择我的过滤条件上下文变量并告诉它要过滤什么来执行此操作。

    【讨论】:

    • 您也可以覆盖执行计划中的上下文。执行计划使用您覆盖的上下文变量,可以再次覆盖。
    • @BalazsGunics 这完全偏离了主题,但我还没有看到为什么使用执行计划而不是包装我将在父包装作业中使用的作业,然后调用这些作业(也可能并行化)。如果您能给我一个好的、快速的示例用法,那么我很乐意写一个规范的问题供您更详细地回答。
    • 首先我必须说我也讨厌执行计划。我最近发现你也可以在那里覆盖上下文参数。例如,如果您有一个在 2 个系统之间移动数据的通用作业,您可以创建一个执行计划,其中第一次执行加载模式 A + 表 (...),第二次执行加载模式 B + 表 (... ) 这样您就可以定义一次源-目标参数,然后对于每次执行,您都可以在执行计划中定义执行参数。因此,您不必打开 Studio。对于 DWH 作业,我们使用作业而不是执行计划
    • 感谢大家的建议和见解。需要考虑的事情是,如果我在 TAC 中创建了一个作业但有多个记录,每个记录都被传递一个不同的上下文文件(将从该文件中读取该作业的上下文值),这会在 TAC 中创建一堆类似的作业。另一种选择是在数据库中输入这些上下文变量,然后每 20 分钟运行一次作业,查看哪些作业的调度时间小于或等于运行时间,循环运行返回的记录;我必须看看如何并行而不是串行地执行这些作业。有什么建议或见解吗?
    • 在 TAC 上有很多类似的工作有什么真正的问题吗?当事情开始出错时,您建议的方法听起来过于复杂并且容易出现问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-19
    • 1970-01-01
    • 2016-11-15
    • 2019-07-05
    • 1970-01-01
    • 2015-05-06
    • 1970-01-01
    相关资源
    最近更新 更多