Apache spark Pyspark作业最后几个任务挂起

Apache spark Pyspark作业最后几个任务挂起,apache-spark,pyspark,Apache Spark,Pyspark,嗨,我在pyspark工作中遇到了一个奇怪的问题,弄不清楚发生了什么。 基本上,我已经从数据帧转换了RDD。然后,我使用pipe()调用一个外部命令来逐个处理RDD中的元素。 一切都很好,直到最后只有4个任务会继续运行,永远不会完成。 当我检查executor日志时,看起来所有记录都已处理,但由于某些原因,任务没有退出 不知道有没有人有什么线索 我遇到了同样的问题,看起来像是死锁。执行器的线程处于等待状态,如线程转储中所示: 而且作业的任务时间是0毫秒(意味着它甚至还没有开始!): 同时,驱动

嗨,我在pyspark工作中遇到了一个奇怪的问题,弄不清楚发生了什么。 基本上,我已经从数据帧转换了RDD。然后,我使用pipe()调用一个外部命令来逐个处理RDD中的元素。 一切都很好,直到最后只有4个任务会继续运行,永远不会完成。 当我检查executor日志时,看起来所有记录都已处理,但由于某些原因,任务没有退出

不知道有没有人有什么线索


我遇到了同样的问题,看起来像是死锁。执行器的线程处于等待状态,如线程转储中所示: 而且作业的任务时间是0毫秒(意味着它甚至还没有开始!):

同时,驱动程序进程认为执行器正在积极运行并等待其结果: 最后一部分可以通过终止整个作业并检查日志来检查。对我来说,在
映射分区(…)
说了一些关于
getResults
的话之后,终止作业总是中断
.toDF()


实际上,seiya的评论激发了我的灵感,让我想出了一个主意。完整的缓冲区可以解释这种行为,因此我增加了与缓冲区相关的Spark设置的值,即
Spark.shuffle.file.buffer=256k
Spark.kryoserializer.buffer.max=256m
,这是其默认值的四倍。由于我更改了这些设置,该问题已经有一段时间没有出现了。

忘了提到我正在使用python3.4和spark 2.1,我遇到了相同的问题,这描述了相同的问题@seiya:你发现了什么吗?事实上,在我们修复了外部程序中错误输出大量消息的问题后,问题就消失了。我们怀疑这和火花管缓冲器的大小有关,但我们同样缺乏证据。无法从spark作业日志中找到任何有用的信息。奇怪。