由于
的修复,下载了最新的Spark
版本
错误AsyncEventQueue:70 - 从队列appStatus中删除事件。
设置环境变量并在PyCharm
中运行相同的代码后,我收到此错误,我无法找到解决方案。
Exception in thread "main" java.util.NoSuchElementException: key not found: _PYSPARK_DRIVER_CONN_INFO_PATH
at scala.collection.MapLike$class.default(MapLike.scala:228)
at scala.collection.AbstractMap.default(Map.scala:59)
at scala.collection.MapLike$class.apply(MapLike.scala:141)
at scala.collection.AbstractMap.apply(Map.scala:59)
at org.apache.spark.api.python.PythonGatewayServer$.main(PythonGatewayServer.scala:64)
at org.apache.spark.api.python.PythonGatewayServer.main(PythonGatewayServer.scala)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.spark.deploy.JavaMainApplication.start(SparkApplication.scala:52)
at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:894)
at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:198)
at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:228)
at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:137)
at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
任何帮助?
答案 0 :(得分:1)
我正在将Pyspark 2.3.1与pycharm 2018.1.4一起使用,并在Windows计算机上遇到类似的问题。 当我使用spark-submit运行此python文件时,它会成功执行。
我已按照以下步骤操作
C:\ apache-spark
和
C:\ apache-spark \ python \ lib \ py4j-0.10.7-src.zip
创建了新的python
文件(Demo1.py),并粘贴到其中的内容下方。
from pyspark import SparkContext
sc = SparkContext(master="local", appName="Spark Demo")
rdd = sc.textFile("C:/apache-spark/README.md")
wordsRDD = rdd.flatMap(lambda words: words.split(" "))
wordsRDD = wordsRDD.map(lambda word: (word, 1))
wordsCount = wordsRDD.reduceByKey(lambda x, y: x+y)
print wordsCount.collect()
在pycharm上运行此python文件会出现以下错误
线程“ main”中的异常java.util.NoSuchElementException:键不是 找到:_PYSPARK_DRIVER_CONN_INFO_PATH
从命令提示符处执行时与同一程序相同,会产生正确的结果。
C:\Users\manish>spark-submit C:\Demo\demo1.py
有解决此问题的建议吗?
答案 1 :(得分:0)
我也有类似的例外。我的问题是运行jupyter,并与其他用户交流。当我使用相同的用户运行它们时,问题就解决了。
详细信息;
当我将Spark从v2.2.0更新到v2.3.1然后运行Jupyter笔记本时,错误日志如下;
Exception in thread "main" java.util.NoSuchElementException: key not found: _PYSPARK_DRIVER_CONN_INFO_PATH
at scala.collection.MapLike$class.default(MapLike.scala:228)
at scala.collection.AbstractMap.default(Map.scala:59)
at scala.collection.MapLike$class.apply(MapLike.scala:141)
at scala.collection.AbstractMap.apply(Map.scala:59)
at org.apache.spark.api.python.PythonGatewayServer$.main(PythonGatewayServer.scala:64)
at org.apache.spark.api.python.PythonGatewayServer.main(PythonGatewayServer.scala)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.spark.deploy.JavaMainApplication.start(SparkApplication.scala:52)
at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:894)
at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:198)
at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:228)
at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:137)
at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
我在谷歌搜索时遇到以下链接; spark-commits mailing list archives 在代码
中/core/src/main/scala/org/apache/spark/api/python/PythonGatewayServer.scala
有变化
+ // Communicate the connection information back to the python process by writing the
+ // information in the requested file. This needs to match the read side in java_gateway.py.
+ val connectionInfoPath = new File(sys.env("_PYSPARK_DRIVER_CONN_INFO_PATH"))
+ val tmpPath = Files.createTempFile(connectionInfoPath.getParentFile().toPath(),
+ "connection", ".info").toFile()
根据此更改,将在其中创建一个临时目录和一个文件。我的问题是运行jupyter,并与其他用户交流。因此,我认为该进程无法创建临时文件。当我以相同的用户身份运行它们时,问题解决了。希望对您有所帮助。
答案 2 :(得分:0)
我也遇到了这个问题,最终我从PyCharm导入/运行的pyspark代码仍然是spark 2.2安装,而不是我更新了SPARK_HOME
所指向的spark 2.3安装。
具体来说,我在我的PyCharm项目结构中添加了spark-2.2,然后将其python文件夹标记为“ Sources”,因此PyCharm可以识别其所有符号。因此,PyCharm代码是从那里导入的,而不是spark-2.3,并且较旧的代码没有设置_PYSPARK_DRIVER_CONN_INFO_PATH
环境变量。
如果Vezir的答案不能解决您的问题,请尝试跟踪创建SparkContext,并仔细比较从中读取的路径(而不是spark安装的路径)。同样,如果您是通过pip将pyspark安装到python项目中的,请确保已安装2.3.1以匹配已安装的spark版本。
答案 3 :(得分:0)
当您使用旧版pyspark(例如:2.3.0)运行spark 2.3.1 jar时,可能会发生这种情况
答案 4 :(得分:0)
我也遇到了这个问题。接下来就是我要做的事,希望对您有所帮助:
1 。找到您的Spark版本,我的Spark版本是2.4.3;
2 。找到您的pyspark版本,我的pyspark,version是2.2.0;
3 。与spark版本重新安装pyspark
pip install pyspark==2.4.3
然后一切正常。希望能帮助您。