pyspark - 与 show 方法或计数一起使用时,jupyter 单元执行挂起并引发异常
问题描述
我在 jupyter hub 上本地运行一些 pyspark 代码。我的系统 RAM 是 32 GB。每当我在某些操作(例如 join 或 union 或其他)之后使用 show() 或 count() 方法时,我的内核都会被挂起或死掉,或者有时它会抛出异常。但是如果没有 show() 或 count() 方法,代码可以正常工作。
我不知道是什么导致了这个问题。我正在处理的数据大小约为 1 GB。
对此的任何线索将不胜感激。
大多数时候错误将是:引起:java.lang.OutOfMemoryError:Java堆空间,但只有当我使用show()或count()时
- 另外,如果我使用下面的方法,那么它也会引发异常
m_f_1.limit(15).toPandas().head()
错误:root:发送命令时出现异常。回溯(最近一次通话最后):文件“/home/tzade/spark-2.3.2-bin-hadoop2.7/python/lib/py4j-0.10.7-src.zip/py4j/java_gateway.py”,第 1159 行, 在 send_command raise Py4JNetworkError("Answer from Java side is empty") py4j.protocol.Py4JNetworkError: Answer from Java side is empty
在处理上述异常的过程中,又出现了一个异常:
回溯(最近一次通话):文件“/home/tzade/spark-2.3.2-bin-hadoop2.7/python/lib/py4j-0.10.7-src.zip/py4j/java_gateway.py”,第 985 行,在 send_command response = connection.send_command(command) 文件“/home/tzade/spark-2.3.2-bin-hadoop2.7/python/lib/py4j-0.10.7-src.zip/py4j/java_gateway.py” ,第 1164 行,在 send_command “接收时出错”,e,proto.ERROR_ON_RECEIVE) py4j.protocol.Py4JNetworkError:接收时出错
解决方案
推荐阅读
- vue.js - 动态 Vue 实例是一个好习惯吗?
- reactjs - TypeError:无法读取未定义笑话的属性“forEach”
- c++ - 无法运行从我的 Google 云端硬盘加载的解决方案
- system.commandline - 有没有办法通过 System.CommandLine 的 —help 选项获取帮助文本输出?
- reactjs - React render button 'x' of times
- python - 窗口化最小-最大变换
- python - 转换字典中的列表
- r - R forEach 为列表列表和结构输出列表分配名称
- java - 对 Spring 端点的 Java 请求
- npm - npm v7 的“预卸载”生命周期脚本的替代方案