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

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

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

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

Дополнительная информация
В этом посте упоминалось, что существует три способа установить аргумент времени выполнения конвейера:
- Плагин Argument Setter (Вы можете записать это значение в файл в первый конвейер. Во всех последующих конвейерах создайте параметр для чтения этого файла.)
- Передача аргумента времени выполнения при запуске конвейера (описанного выше)
- Установка предпочтений (дает возможность сохранять информацию о конфигурации на различных уровнях системы, включая экземпляр CDAP, пространство имен, приложения и программные уровни.)
Вы можете записать это значение в файл в первом конвейере. Во всех последующих конвейерах создайте параметр для чтения этого файла. Таким образом, цель должна быть достигнута.
@Sudhir, вы можете изучить ПРЕДПОЧТЕНИЯ. https://cdap.atlassian.net/wiki/spaces/DOCS/pages/477561058/Preferences+HTTP+RESTful+API
Вы установили переменную на уровне пространства имен, и, согласно вашим выводам, она оценивается каждый раз, когда используется.
Можете ли вы попробовать установить его на уровне приложения? И передать его следующему конвейеру. Я считаю, что в этом случае его следует оценивать только один раз в этом конкретном приложении (конвейере), и после этого значение будет передано.
Предпочтение также доступно на уровне программы.