0

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

我怎样才能防止这个值被再次计算?

4

3 回答 3

1

正如之前评论的那样,您可以设置一个管道来触发另一个管道;您可以在第一个管道中设置运行时变量,该变量将在触发的管道中设置。您可以按照以下步骤创建入站触发器:

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

在此处输入图像描述

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

在此处输入图像描述

  1. 如果您查看之前的管道DataFusionQuickstar您将看到,在出站触发选项(右侧)中,将由DataFusionQuickstar触发的管道。

在此处输入图像描述

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

在此处输入图像描述

附加信息

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

  1. Argument Setter 插件(您可以将文件中的该值写到第一个管道中。在所有后续管道中,创建一个参数来读取该文件。)
  2. 启动管道时传递运行时参数(上面描述的那个)
  3. 设置首选项(它提供了在系统的各个级别保存配置信息的能力,包括 CDAP 实例、命名空间、应用程序和程序级别。)
于 2020-08-21T18:53:24.877 回答
0

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

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

您可以尝试在应用程序级别设置它吗?并将其传递给下一个管道。我相信在这种情况下,它应该只在该特定应用程序(管道)中评估一次,然后将传递值。

偏好也可在程序级别获得。

于 2020-10-29T07:16:32.947 回答
0

您可以在第一个管道的文件中写下该值。在所有后续管道中,创建一个参数来读取该文件。这样,目标就应该达到了。

于 2020-09-02T11:17:13.527 回答