5

在 EMR 5.1.0 上运行 PySpark 2 作业作为一个步骤。即使在脚本完成了_SUCCESS写入 S3 的文件和 Spark UI 显示作业已完成后,EMR 仍将步骤显示为“正在运行”。我已经等了一个多小时,看看 Spark 是否只是试图清理自己,但该步骤从未显示为“已完成”。日志中写的最后一件事是:

INFO MultipartUploadOutputStream: close closed:false s3://mybucket/some/path/_SUCCESS
INFO DefaultWriterContainer: Job job_201611181653_0000 committed.
INFO ContextCleaner: Cleaned accumulator 0

Spark 1.6 没有这个问题。我尝试了一堆不同的hadoop-aws罐子aws-java-sdk无济于事。

我正在使用默认的 Spark 2.0 配置,因此我认为不会编写任何其他类似元数据的内容。此外,数据的大小似乎对这个问题没有影响。

4

2 回答 2

4

如果你还没有,你应该关闭你的火花上下文。

sc.stop()

此外,如果您正在通过浏览器观看 Spark Web UI,您应该关闭它,因为它有时会使 spark 上下文保持活动状态。我记得在 spark dev 邮件列表上看到过这个,但找不到它的 jira。

于 2016-11-19T04:04:19.407 回答
1

我们遇到了这个问题,并通过使用以下 spark-submit 选项在集群部署模式下运行作业来解决它:

spark-submit --deploy-mode cluster 

在客户端模式下运行时,驱动程序在主实例中运行,并且尽管火花火花上下文关闭,火花提交过程仍然卡住,这与此有关。这导致实例控制器不断轮询进程,因为它从未收到完成信号。使用上述选项在其中一个实例节点上运行驱动程序似乎没有这个问题。希望这可以帮助

于 2018-02-06T13:06:38.680 回答