Spyder启动命令为何创建两个Spark Web UI?求验证及解决
Spyder中SparkSession启动脚本触发双Web UI问题
现象
- 在Spyder的IPython控制台启动命令中配置以下代码:
执行后会在4040和4041端口同时启动两个Web UI;from pyspark.sql import SparkSession ; spark = SparkSession.builder.appName("SparkExamples.com").getOrCreate() - 注释该启动命令,手动在IPython提示符执行相同代码时,仅会在4040端口生成一个Web UI。
关闭UI的行为差异
- 执行
spark.stop()只能关闭第二个UI; - 执行
sys.exit()(不重启内核)会保留第一个UI持续运行; - 只有执行
exit()重启内核,才能彻底关闭第一个UI。
疑问与环境
仅打开一个Spyder控制台,理论上应只有一个内核,为何启动命令会创建两个Web UI?
环境:Windows 10,通过Anaconda安装Python、Spyder、Java及PySpark。希望其他使用Spyder/Spark环境的用户能验证该现象是否普遍存在。
心跳超时导致需频繁重启IPython控制台的问题
问题表现
遇到心跳超时警告,伴随的副作用是调用其他命名空间的对象时出现如下错误:
ConnectionRefusedError: [WinError 10061] No connection could be made because the target machine actively refused it
代码示例
- 可正常运行:
spark.read? # 后缀"?"在Spyder中调出文档字符串 - 无法运行:
spark.read.csv? df.show() # df为DataFrame对象 df = spark.read.csv( r"C:\cygwin64\home\User.Name\tmp\zipcodes.csv", header=True ) spark.stop()
临时解决方案
执行exit()重启内核并重新创建所有对象后,上述命令可恢复正常。
内容的提问来源于stack exchange,提问作者user2153235
相关产品推荐
相关产品推荐

