我想在管道完成时将Data Fusion管道的runid传递给某些函数,但是我找不到任何保存此值的运行时变量。请帮忙!
答案 0 :(得分:0)
@Edwin Elia在评论部分提供了正确答案:
当前无法在其运行或先前的管道中检索数据融合管道的run-id
。这是一个enhancement,您可以对其进行跟踪。
谈论在管道完成后检索run_id
值时,您应该能够使用CDAP documentation中的REST API来获取有关运行的信息,包括运行ID。
答案 1 :(得分:0)
作为对上一个答案的更新,首先要做的是获取给定命名空间中已部署管道的详细信息。为此,应查询以下端点:'/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"]}&stop={run["start"]}'
。前面的代码段是一个 Python 代码段,其中 run
是一个包含特定运行的运行详细信息的字典。
如 CDAP microservice guide 中所述,要调用这些端点,必须通过运行以下命令获取 CDAP 端点:gcloud beta data-fusion instances describe --project=${PROJECT} --location=${REGION} --format="value(apiEndpoint)" ${INSTANCE_ID}
。还需要身份验证令牌,可以通过运行以下命令找到:gcloud auth print-access-token
。