Spark Python reduceByKey性能低下

时间:2015-10-13 00:16:10

标签: python pyspark

你能帮我解决我遇到的问题吗?我正在研究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的分区数量,但我不知道我是否正确。谢谢你的帮助 !

1 个答案:

答案 0 :(得分:0)

您能否提供您正在使用的数据的示例,并解释您想要做什么?

我不确定我理解为什么你需要在reduceByKey动作之后做groupByKey。

但总的来说,你得到的错误可能是执行者缺乏记忆的一个指标。 Python使用了一些火花无法解释的额外内存。

解决此问题的方法是放大spark.yarn.executor.memoryOverhead

我使用与spark.yarn.executor.memoryOverhead大小相似的executor-memory