编程语言
首页 > 编程语言> > python – Pyspark:TaskMemoryManager:无法分配页面:在错误分析中需要帮助

python – Pyspark:TaskMemoryManager:无法分配页面:在错误分析中需要帮助

作者:互联网

我在独立群集模式下运行spark作业时遇到这些错误.

我的火花工作旨在:

>运行一些groupby,
>数,
>并加入以获得最终的df,然后加入df.toPandas().to_csv().

输入数据集为524 Mb.我得到的错误:

WARN TaskMemoryManager: Failed to allocate a page (33554432 bytes), try again.

多次重复上述后,再次出现新错误

> WARN NettyRpcEnv:忽略失败:java.util.concurrent.TimeoutException:无法在10秒内收到任何回复
> org.apache.spark.rpc.RpcTimeoutException:期货在[10秒]后超时.此超时由spark.executor.heartbeatInterval控制
> at org.apache.spark.rpc.RpcTimeout.组织$阿帕奇$火花$RPC $RpcTimeout $$createRpcTimeoutException
> ExecutorLostFailure(由其中一个正在运行的任务导致执行程序驱动程序退出)原因:执行程序心跳超时158295 ms后超时
>处理来自(‘127.0.0.1’,49128)的请求时发生异常
Traceback(最近一次调用最后一次):

文件“/home/stp/spark-2.0.0-bin-hadoop2.7/python/pyspark/accumulators.py”,第235行,句柄
num_updates = read_int(self.rfile)
在read_int中输入文件“/home/stp/spark-2.0.0-bin-hadoop2.7/python/pyspark/serializers.py”,第545行
提出EOFError
引发EOFError
>最后### ******** ##

py4j.protocol.Py4JNetworkError:尝试连接到Java服务器时发生错误(127.0.0.1:38073)

首先想到的是,我认为,错误可能是由于内存错误(TaskMemoryManager)和总计16gb,该过程消耗最大6 gb,留下9 gb空闲.我还将驱动程序内存设置为10G.通过.

但是,当我在我的最终数据帧上执行count()或show()时,它是成功的操作.但是在执行toCsv时,它会抛出上述错误/警告.

实际上并不了解/猜测可能导致问题的原因.

请帮我分析一下上面的错误.欢迎任何帮助/评论.谢谢.

解决方法:

在我们的例子中,我们有很多较小的表(<10 MB).因此我们决定禁用广播,此外还开始使用G1GC进​​行垃圾收集.将这些条目添加到$SPARK_HOME / conf中的spark-defaults.conf文件中

spark.driver.extraJavaOptions -XX:+UseG1GC
spark.executor.extraJavaOptions  -XX:+UseG1GC
spark.sql.autoBroadcastJoinThreshold    -1

或者作为替代方案,您可以调整autoBroadcast的阈值大小,并查看它解决问题.

标签:python,apache-spark,pyspark,apache-spark-sql,spark-dataframe
来源: https://codeday.me/bug/20190724/1524299.html