数据融合:将运行时参数从一个管道传递到另一个管道

时间:2020-08-20 16:40:14

标签: google-cloud-data-fusion cdap

我在名称空间中设置了运行时参数,该名称空间是business_date:$ {logicalStartTime(yyyy-MM-dd)}。我在管道中使用此参数,并希望在其他管道中使用相同的参数。 有许多背对背的管道,我希望在第一个管道中计算出的值在整个管道中都相同。 假设该值计算为“ 2020-08-20 20:14:11”,并且一旦管道1成功,我就将此参数传递给管道2,但是由于此参数是在名称空间级别定义的,因此在管道2启动时将被覆盖。

如何防止再次计算该值?

3 个答案:

答案 0 :(得分:1)

如前所述,您可以设置一个管道来触发另一个管道;您可以在第一个管道中设置运行时变量,并将在触发的管道中设置此变量。您可以按照以下步骤创建入站触发器:

  1. 创建管道之后,选择要运行的最后一个管道。就我而言,我有 DataFusionQuickstart2 管道。

enter image description here

  1. 在管道应用程序的左侧,单击“入站触发器”->“设置管道触发器”,您将看到可以触发的管道。检查会触发 DataFusionQuickstart2 中的 DataFusionQuickstart2 管道的事件并启用它。

enter image description here

  1. 如果您查看上一个管道 DataFusionQuickstar ,您将在出站触发选项(右侧)中看到将由 DataFusionQuickstar

enter image description here

  1. 最后设置您的运行时参数。

enter image description here

其他信息

在此post中,提到了可以通过三种方式设置管道的运行时参数:

  1. Argument Setter plugin(您可以将文件中的值写到第一个管道中。在所有后续管道中,创建一个参数以读取该文件。)
  2. Passing runtime argument when starting a pipeline(上面描述的那个)
  3. Setting Preferences(它提供了在系统的各个级别(包括CDAP实例,名称空间,应用程序和程序级别)保存配置信息的功能。)

答案 1 :(得分:0)

您可以在第一个管道的文件中记录该值。在所有后续管道中,创建一个参数以读取该文件。这样,就应该实现目标。

答案 2 :(得分:0)

@Sudhir,您可以探索偏好。 https://cdap.atlassian.net/wiki/spaces/DOCS/pages/477561058/Preferences+HTTP+RESTful+API

您已在命名空间级别设置了变量,并且根据您的发现,每次使用变量时都会对其进行评估。

您可以尝试在应用程序级别进行设置吗? 并将其传递到下一个管道。我认为在那种情况下,应该只在该特定应用程序(管道)中对它进行一次评估,然后再传递值。

首选项在程序级别也可用。