如何停止/退出 AWS Glue 作业 (PySpark)?

问题描述

我有一个成功运行的 AWS glue 作业,可以转换数据以进行预测。如果达到特定条件,我想停止处理并输出状态消息(正在运行):

if specific_condition is None:
    s3.put_object(Body=json_str,Bucket=output_bucket,Key=json_path )
    return None

这会产生“SyntaxError: 'return' external function”,我试过:

if specific_condition is None:
    s3.put_object(Body=json_str,Key=json_path )
    job.commit()

这不是在 AWS Lambda 中运行,而是使用 Lambda 启动的 glue 作业(例如,start_job_run())。

解决方法

Glue Spark 作业中没有返回值,而 job.commit() 只是向 Glue 发出信号,表示作业的任务已完成,仅此而已,脚本在此之后继续运行。要在流程完成后结束您的工作,您必须:

  1. Call sys.exit(STATUS_CODE) #状态码可以任意
  2. 根据条件进行战略性编码,以便作业在 job.commit 之后没有任何代码行。

请注意,如果在 job.commit() 之前调用 sys.exit,则粘合作业将失败。