Слияние данных: передача аргумента среды выполнения из одного конвейера в другой

Aug 20 2020

У меня есть аргумент времени выполнения, установленный в пространстве имен, которым является business_date: $ {logicalStartTime (yyyy-MM-dd)}. Я использую этот аргумент в своем конвейере и хочу использовать его в другом конвейере. Есть много конвейеров, расположенных один за другим, и я хочу, чтобы значение было одинаковым во всех конвейерах после вычисления в первом конвейере. Предположим, значение вычисляется как «2020-08-20 20:14:11», и после того, как конвейер преуспел, я передаю этот аргумент конвейеру 2, но поскольку эти аргументы определены на уровне пространства имен, он переопределяется при запуске конвейера 2.

Как я могу предотвратить повторный расчет этого значения?

Ответы

1 Juls Aug 21 2020 at 18:53

Как отмечалось ранее, вы можете настроить один конвейер для запуска другого конвейера; вы можете установить переменную времени выполнения в первом конвейере, и эта переменная будет установлена ​​в запущенных конвейерах. Вы можете создать входящий триггер, выполнив следующие шаги:

  1. После того, как вы создали свои конвейеры, выберите последний конвейер, который вы хотите запустить. В моем случае у меня есть конвейер DataFusionQuickstart2 .

  1. В приложении конвейера с левой стороны щелкните «Входящие триггеры» -> «Установить триггеры конвейера», и вы увидите каналы, которые вы можете запускать. Отметьте событие, которое запускает конвейер DataFusionQuickstart2 из DataFusionQuickstart, и включите его.

  1. Если вы посмотрите на предыдущий конвейер DataFusionQuickstar, вы увидите в опции исходящего триггера (справа) конвейеры, которые будут запускаться DataFusionQuickstar .

  1. Наконец, установите аргумент времени выполнения.

Дополнительная информация

В этом посте упоминалось, что существует три способа установить аргумент времени выполнения конвейера:

  1. Плагин Argument Setter (Вы можете записать это значение в файл в первый конвейер. Во всех последующих конвейерах создайте параметр для чтения этого файла.)
  2. Передача аргумента времени выполнения при запуске конвейера (описанного выше)
  3. Установка предпочтений (дает возможность сохранять информацию о конфигурации на различных уровнях системы, включая экземпляр CDAP, пространство имен, приложения и программные уровни.)
adiideas Sep 02 2020 at 11:17

Вы можете записать это значение в файл в первом конвейере. Во всех последующих конвейерах создайте параметр для чтения этого файла. Таким образом, цель должна быть достигнута.

adiideas Oct 29 2020 at 07:16

@Sudhir, вы можете изучить ПРЕДПОЧТЕНИЯ. https://cdap.atlassian.net/wiki/spaces/DOCS/pages/477561058/Preferences+HTTP+RESTful+API

Вы установили переменную на уровне пространства имен, и, согласно вашим выводам, она оценивается каждый раз, когда используется.

Можете ли вы попробовать установить его на уровне приложения? И передать его следующему конвейеру. Я считаю, что в этом случае его следует оценивать только один раз в этом конкретном приложении (конвейере), и после этого значение будет передано.

Предпочтение также доступно на уровне программы.