EMR 7.3.0集群Jupyter PySpark执行df.count()报KeyError求助
EMR 7.3.0 Jupyter PySpark执行
df.count()出现KeyError: 11718的解决办法 问题本质
这个错误和你的代码、Spark内核逻辑无关,是EMR自带的Jupyter Spark监控插件(awseditorssparkmonitoringwidget)的线程安全bug导致的。插件的cell_monitor线程在异步追踪Spark任务时,尝试访问一个不存在的Stage ID(这里是11718),从而抛出KeyError——你之前的show()等操作能正常执行,也验证了DataFrame本身没有问题。
解决办法
临时快速修复:重启Jupyter内核
重启内核会重置监控插件的状态,暂时绕过这个问题:
- 在Jupyter界面点击「Kernel」→「Restart」
- 重启后重新运行代码(记得重新执行
df.cache())
彻底解决:禁用Spark监控插件
如果不需要Jupyter里的Spark监控组件,可以直接禁用该插件:
- 打开Jupyter右上角「Settings」→「Advanced Settings Editor」
- 切换到「Notebook」选项卡
- 在「User Preferences」中添加如下配置并保存:
{"awseditorssparkmonitoringwidget": {"enabled": false}} - 刷新页面后,插件会停止运行,不会再触发此类线程错误
长期方案:升级EMR版本
AWS后续发布的EMR版本(如7.4.0及以上)大概率修复了这个插件的逻辑漏洞,若集群允许升级,可以切换到最新稳定版EMR。
验证方法
执行上述操作后,重新运行df.count(),如果能正常返回计数,且无报错,说明问题已解决。同时可以再次执行df.orderBy('someRow').show(20, False)确认DataFrame操作依然正常。
内容的提问来源于stack exchange,提问作者mwarrior
相关产品推荐
相关产品推荐

