如何停止/退出 AWS Glue 作业 (PySpark)?
How to stop / exit a AWS Glue Job (PySpark)?
我成功地 运行 转换数据以进行预测的 AWS Glue 作业。如果达到特定条件,我想停止处理并输出状态消息(正在运行):
if specific_condition is None:
s3.put_object(Body=json_str, Bucket=output_bucket, Key=json_path )
return None
这会产生“语法错误:'return' 外部函数”,我试过:
if specific_condition is None:
s3.put_object(Body=json_str, Bucket=output_bucket, Key=json_path )
job.commit()
这不是 AWS Lambda 中的 运行,而是开始使用 Lambda 的 Glue Job(例如,start_job_run())。
[此答案可能不适用于最新的 glue job 版本,请参考 Jeremy 的答案。]
Glue Spark 作业中没有 return,job.commit() 只是向 Glue 发出作业任务已完成的信号,仅此而已,脚本在此之后继续其 运行。要在流程完成后结束您的工作,您必须:
- 调用sys.exit(STATUS_CODE) #状态码可以任意
- 在条件下有策略地编写代码,使得作业在 job.commit 之后没有任何代码行。
请注意,如果在 job.commit() 之前调用 sys.exit,胶水作业将失败。
由于@amsh 的解决方案对我不起作用,我继续寻找解决方案并发现:
os._exit()
terminates immediately at the C level and does not perform any of the normal tear-downs of the interpreter.
感谢@Glyph's answer!然后你可以这样进行:
if specific_condition is None:
s3.put_object(Body=json_str, Bucket=output_bucket, Key=json_path )
job.commit()
os._exit()
您的作业将会成功,并且不会因“SystemExit: 0”错误而终止。
如果您点击职位并点击您的相关职位,您将在职位状态中看到带有 运行 的 x 标记。
参考请查看https://forums.aws.amazon.com/thread.jspa?threadID=262217
我成功地 运行 转换数据以进行预测的 AWS Glue 作业。如果达到特定条件,我想停止处理并输出状态消息(正在运行):
if specific_condition is None:
s3.put_object(Body=json_str, Bucket=output_bucket, Key=json_path )
return None
这会产生“语法错误:'return' 外部函数”,我试过:
if specific_condition is None:
s3.put_object(Body=json_str, Bucket=output_bucket, Key=json_path )
job.commit()
这不是 AWS Lambda 中的 运行,而是开始使用 Lambda 的 Glue Job(例如,start_job_run())。
[此答案可能不适用于最新的 glue job 版本,请参考 Jeremy 的答案。]
Glue Spark 作业中没有 return,job.commit() 只是向 Glue 发出作业任务已完成的信号,仅此而已,脚本在此之后继续其 运行。要在流程完成后结束您的工作,您必须:
- 调用sys.exit(STATUS_CODE) #状态码可以任意
- 在条件下有策略地编写代码,使得作业在 job.commit 之后没有任何代码行。
请注意,如果在 job.commit() 之前调用 sys.exit,胶水作业将失败。
由于@amsh 的解决方案对我不起作用,我继续寻找解决方案并发现:
os._exit()
terminates immediately at the C level and does not perform any of the normal tear-downs of the interpreter.
感谢@Glyph's answer!然后你可以这样进行:
if specific_condition is None:
s3.put_object(Body=json_str, Bucket=output_bucket, Key=json_path )
job.commit()
os._exit()
您的作业将会成功,并且不会因“SystemExit: 0”错误而终止。
如果您点击职位并点击您的相关职位,您将在职位状态中看到带有 运行 的 x 标记。
参考请查看https://forums.aws.amazon.com/thread.jspa?threadID=262217