你能帮我解决我遇到的问题吗?我正在研究100Go文件。我试着运行以下代码:
testUP_TIME = (linesSampleMarch
.filter(lambda x : x[0][0:10]=="2015-03-21")
.map(lambda s : ((s[1], s[2]),1) )
.reduceByKey(lambda x, y : x+y ))
.groupByKey()
.cache())
经过很长一段时间(大约30'),它最终以一个错误结束:“调用z时发生错误:org.apache.spark.api.python.PythonRDD.runJob。 :org.apache.spark.SparkException:作业因阶段失败而中止:阶段5.0中的任务1失败4次,最近失败:阶段5.0中丢失的任务1.4(TID 654,192.168.161.52):ExecutorLostFailure(执行者9丢失) “
我发现reduceByKey()负责它。您有什么建议来优化此查询吗?我想增加父RDD的分区数量,但我不知道我是否正确。谢谢你的帮助 !
答案 0 :(得分:0)
您能否提供您正在使用的数据的示例,并解释您想要做什么?
我不确定我理解为什么你需要在reduceByKey动作之后做groupByKey。
但总的来说,你得到的错误可能是执行者缺乏记忆的一个指标。 Python使用了一些火花无法解释的额外内存。
解决此问题的方法是放大spark.yarn.executor.memoryOverhead
。
我使用与spark.yarn.executor.memoryOverhead
大小相似的executor-memory
。