Повторный запуск заданий DataSphere Jobs
В Yandex DataSphere доступен повторный запуск задания с переопределением необходимых параметров. Повторный запуск создает клон задания (job fork), а оригинальное задание становится родительским. Клон задания также можно запустить повторно, тогда задание станет одновременно и клоном одного, и родительским другого.
Чтобы реализовать регулярный запуск одного и того же задания с переопределением некоторых параметров, DataSphere Jobs можно использовать совместно с Yandex Managed Service for Apache Airflow™.
Для повторного запуска задания с новыми параметрами в DataSphere CLI и в составе DataSphere Jobs SDK доступна команда fork
, которая позволяет переопределить следующие параметры:
name
— имя задания;desc
— описание задания;args
— аргументы задания;vars
— файлы с входными и выходными данными;env_vars
— переменные окружения;working_storage
— конфигурация расширенной рабочей директории;cloud_instance_types
— конфигурация вычислительных ресурсов.
Пример
Рассмотрим файл конфигурации задания config.yaml
для кода, запускающего поиск подстроки (grep
) по входному файлу:
name: simple-bash-script
desc: Find text pattern in input file with grep
cmd: grep -C ${RANGE} ${OPTIONS} -f ${PATTERN} ${INPUT} > ${OUTPUT}
args:
RANGE: 0
OPTIONS: "-h -r"
inputs:
- pattern.txt: PATTERN
- input.txt: INPUT
outputs:
- output.txt: OUTPUT
Где:
RANGE
— интервал вывода поиска.OPTIONS
— дополнительные флаги командыgrep
.PATTERN
— файл с паттерном подстроки.INPUT
— файл с входными данными.OUTPUT
— файл с выходными данными.
После запуска задания можно получить его идентификатор из логов CLI, с помощью команды execute
или на странице проекта во вкладке DataSphere Jobs в браузере. Чтобы повторно запустить это задание с помощью команды SDK fork
, укажите его идентификатор и переопределите необходимые параметры. Например, задайте новый интервал вывода поиска и новый файл с входными данными:
from datasphere import SDK
sdk = SDK()
sdk.fork_job(
'<идентификатор_задания>',
args={'RANGE': '1'},
vars={'INPUT': 'new_input.txt'},
)