[英]How to get exact reason for failure in EMR through slack?
當我的 pyspark 代碼/引導程序因 EMR 失敗的確切原因而失敗時,我需要一個松弛通知。
我正在使用 airflow 2.0,我正在使用 on_failure_callback=task_fail_slack_alert 來通知 slack。 但它沒有通知。 我的參數正確嗎?
cluster_creator = EmrCreateJobFlowOperator(task_id='create_job_flow',
job_flow_overrides=JOB_FLOW_OVERRIDES)
step_adder = EmrAddStepsOperator(task_id='add_steps',
job_flow_id="{{ task_instance.xcom_pull(task_ids='create_job_flow', key='return_value') }}",
aws_conn_id='aws_default',
steps=SPARK_STEPS,
on_failure_callback=task_fail_slack_alert)
step_checker = EmrStepSensor(task_id='watch_step',
job_flow_id="{{ task_instance.xcom_pull('create_job_flow', key='return_value') }}",
step_id="{{ task_instance.xcom_pull(task_ids='add_steps', key='return_value')[0] }}",
aws_conn_id='aws_default',on_failure_callback=task_fail_slack_alert,)
cluster_remover = EmrTerminateJobFlowOperator(task_id='remove_cluster',
job_flow_id="{{ task_instance.xcom_pull('create_job_flow', key='return_value') }}",
aws_conn_id='aws_default',
dag=dag
)
我收到失敗通知,但不知道 EMR 失敗的確切原因。 我如何得到它?
謝謝,習
exception=context.get('exception') 是 function,它將給出 EMR 失敗的確切原因
使用 slack 的 on_failure_callback 示例:
step_checker = EmrStepSensor(task_id='watch_step',
job_flow_id="{{ task_instance.xcom_pull('create_job_flow',
key='return_value') }}",
step_id="{{task_instance.xcom_pull(task_ids='add_steps',key='return_value')[0] }}",
aws_conn_id='aws_default',
on_failure_callback=task_fail_slack_alert,)
def task_fail_slack_alert(context):
SLACK_CONN_ID = 'slack'
slack_webhook_token = BaseHook.get_connection(SLACK_CONN_ID).password
slack_msg = """
:red_circle: Task Failed.
*Task*: {task}
*Dag*: {dag}
*Execution Time*: {exec_date}
*Log Url*: {log_url}
*Error*:{exception}
""".format(
task=context.get('task_instance').task_id,
dag=context.get('task_instance').dag_id,
exec_date=context.get('execution_date'),
log_url=context.get('task_instance').log_url,
exception=context.get('exception')
)
failed_alert = SlackWebhookOperator(
task_id='slack_test',
http_conn_id='slack',
webhook_token=slack_webhook_token,
message=slack_msg,
username='airflow',
dag=dag)
return failed_alert.execute(context=context)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.