PyCharm 2022.1.1社区版中PySpark show()输出截断问题排查
故障定位结论
该问题和PySpark无关,是PyCharm 2022.1.x 社区版的控制台默认配置改动导致的。
2022.1版本更新后,控制台默认开启了长行截断规则:当单条输出行的字符长度超过默认阈值(约1000字符)时,会直接截断当前行剩余内容,同时终止后续所有输出的渲染——这和你观察到的现象完全匹配:列少的时候单行总长度低于阈值,10行结果可以完整展示;列多的时候单行长度超阈值,输出到第三行就被截断。
排查步骤
- 脱离PyCharm运行同一段代码:可以直接在系统终端启动pyspark,或者将任务提交到Spark集群跑,执行
df.show(10),如果宽表输出完整无截断,即可完全排除PySpark侧故障 - 控制台复现测试:在PyCharm的Python交互控制台里打印一个长度超过1000的连续字符串(比如
print('a'*1200)),如果输出被截断,即可确认是控制台长度限制规则导致的问题
修复方案
- 打开PyCharm设置,进入
File > Settings > Editor > General > Console配置页 - 勾选
Use soft wraps in console(控制台软换行),避免长行直接被截断 - 找到
Truncate long lines in console output选项,取消勾选(2022.1版本该选项默认开启,是截断问题的直接诱因) - 确认
Limit console output by lines的数值不要设置过低(建议保持默认10240行以上即可) - 关闭当前Python控制台,重新启动会话后执行show()即可恢复正常
如果临时不想改IDE配置,也可以在调用show()时手动指定参数适配:
# truncate设为False表示不截断列内容,也可以传入整数指定单字段最大显示长度 df.show(10, truncate=False)
注:该配置问题在PyCharm 2022.1.2后续小版本中已经调整了默认阈值,升级到更高版本的PyCharm也可以解决该问题。
内容的提问来源于stack exchange,提问作者ahajib
相关产品推荐
相关产品推荐

