#google-cloud-data-fusion
#google-cloud-data-fusion
Вопрос:
Я хочу передать runid конвейера слияния данных некоторой функции после завершения конвейера, но я не могу найти какую-либо переменную времени выполнения, которая содержит это значение. Пожалуйста, помогите!
Комментарии:
1. Здравствуйте! Я хотел бы уточнить, хотите ли вы получить run_id во время запуска конвейера или после завершения? Спасибо!
2. Привет, Инес, я хочу передать run_id конвейера облачной функции при успешном завершении конвейера через HTTP-оповещение о конвейере. Я не знаю, существует ли какая-либо переменная, аргумент, который содержит run_id конвейера, на который я могу ссылаться, чтобы передать функцию.
3. Привет, Судхир, в настоящее время существует информация о времени выполнения, содержащая информацию RunID. Могу ли я спросить, что вы пытаетесь сделать в облачной функции, для которой требуется RunID конвейера? У нас есть этот JIRA для запроса функции: issues.cask.co/browse/CDAP-12719
4. Привет, Эдвин, я планирую получить статистику конвейера, например Records.in , из плагинов, использующих ‘POST -H «Authorization: Bearer $ {AUTH_TOKEN}» «$ {CDAP_ENDPOINT} /v3/metrics / query»‘ API, который требует RunID запуска конвейера в качестве входных данных в теле. Поэтому, когда конвейер завершится успешно, я хочу передать его RunID облачной функции, и облачная функция получит статистику с этим runid. См.: cloud.google.com/data-fusion/docs/reference /…
5. Привет, Эдвин, ты упомянул, что эта информация есть в информации о времени выполнения. Я попытался получить доступ к runtime [‘runid’] и runtime [‘run_id’], но этих двух не существует. Что является ключом во время выполнения для получения run_id?
Ответ №1:
В качестве обновления предыдущего ответа первое, что нужно сделать, это получить подробную информацию о развернутых конвейерах в данном пространстве имен. Для этого необходимо запросить следующую конечную точку : '/v3/namespaces/${NAMESPACE}/apps'
. Где ${NAMESPACE}
находится пространство имен, в котором развертывается конвейер.
Эта конечная точка возвращает список с конвейерами, развернутыми в этом пространстве ${NAMESPACE}
имен (не JSON конвейера, а просто список описаний высокого уровня). После получения списка конвейеров для получения показателей выполнения данного конвейера необходимо вызвать следующую конечную точку: '/v3/namespaces/${NAMESPACE}/apps/${PIPELINE}/workflows/DataPipelineWorkflow/runs'
, где ${PIPELINE}
— имя конвейера. Эта конечная точка вернет сведения обо всех запусках для этого конвейера. Здесь можно получить run_id. Поле, содержащее run_id, фактически вызывается runid
в этом списке.
С помощью run_id вы можете получить все журналы выполнения, например, запросив конечную '{CDAP_ENDPOINT}/v3/namespaces/{NAMESPACE}/apps/{PIPELINE}/workflows/DataPipelineWorkflow/runs/{run["runid"]}/logs?start={run["start"]}amp;stop={run["start"]}'
точку. Предыдущий фрагмент представляет собой фрагмент python, где run
представляет собой словарь, содержащий сведения о запуске конкретного запуска.
Как объясняется в руководстве по микросервису CDAP, для вызова этих конечных точек конечная точка CDAP должна быть получена путем выполнения команды: gcloud beta data-fusion instances describe --project=${PROJECT} --location=${REGION} --format="value(apiEndpoint)" ${INSTANCE_ID}
. Также потребуется токен аутентификации, который можно найти, выполнив: gcloud auth print-access-token
.
Ответ №2:
Правильный ответ был предоставлен @Edwin Elia в разделе комментариев:
Извлечение run-id
данных конвейера слияния данных в рамках его выполнения или конвейера предшественника в настоящее время невозможно. Вот улучшение, которое вы можете отслеживать, которое сделало бы это возможным.
Когда речь идет о получении run_id
значения после завершения конвейера, вы должны иметь возможность использовать REST API из документации CDAP для получения информации о запуске, включая run-id.