如何手动使 AWS EMR 步骤失败
How to manually make an AWS EMR step fail
我遇到了一个问题,想到了一个我没有找到好的答案的问题。也就是说,我怎样才能故意让 AWS EMR 步骤失败?
我有一个 Spark Scala 脚本,它作为带有一些命令行参数的 Spark 步骤添加,脚本的输出被写入 S3。
但是如果在读取和处理命令行参数时出现问题,那么脚本的逻辑将被跳过并且脚本结束。但对于 EMR 来说,这是正常行为,它不知道没有输入 if 块。
然后在"failed"运行之后,步骤状态还是变成了"Completed",好像是成功了,结果没有写入S3。
我想完成该步骤,使其处于 "Failed" 状态。
我可以通过抛出异常来做到这一点,然后我可以在 EMR Step 错误日志中的消息中看到相应的异常。但是有更好的方法吗?我想自己手动处理所有异常。
此外,我能否使用 AWS SDK 以某种方式以编程方式找出步骤失败的原因?
Return 来自您的程序的非零值
要故意使 EMR 步骤失败,您始终可以放置一个愚蠢的逻辑,它可能会在 运行 时间内使代码失败。
对于 pyspark,我们将一段代码作为 a=5/0。这将使代码失败。
否则,您可以提供甚至不存在的 S3 路径之类的东西。这也会在 运行 时间内使作业失败。
或
您可以将 exit(1) 写入 return 代码中的非零值以使 EMR 步骤失败。
我遇到了一个问题,想到了一个我没有找到好的答案的问题。也就是说,我怎样才能故意让 AWS EMR 步骤失败? 我有一个 Spark Scala 脚本,它作为带有一些命令行参数的 Spark 步骤添加,脚本的输出被写入 S3。
但是如果在读取和处理命令行参数时出现问题,那么脚本的逻辑将被跳过并且脚本结束。但对于 EMR 来说,这是正常行为,它不知道没有输入 if 块。
然后在"failed"运行之后,步骤状态还是变成了"Completed",好像是成功了,结果没有写入S3。
我想完成该步骤,使其处于 "Failed" 状态。
我可以通过抛出异常来做到这一点,然后我可以在 EMR Step 错误日志中的消息中看到相应的异常。但是有更好的方法吗?我想自己手动处理所有异常。
此外,我能否使用 AWS SDK 以某种方式以编程方式找出步骤失败的原因?
Return 来自您的程序的非零值
要故意使 EMR 步骤失败,您始终可以放置一个愚蠢的逻辑,它可能会在 运行 时间内使代码失败。
对于 pyspark,我们将一段代码作为 a=5/0。这将使代码失败。 否则,您可以提供甚至不存在的 S3 路径之类的东西。这也会在 运行 时间内使作业失败。
或
您可以将 exit(1) 写入 return 代码中的非零值以使 EMR 步骤失败。