查找“pyspark.worker”的模块规范时出错(ModuleNotFoundError:没有名为“pyspark”的模块)

Posted

技术标签:

【中文标题】查找“pyspark.worker”的模块规范时出错(ModuleNotFoundError:没有名为“pyspark”的模块)【英文标题】:Error while finding module specification for 'pyspark.worker' (ModuleNotFoundError: No module named 'pyspark') 【发布时间】:2019-09-23 08:18:35 【问题描述】:

我正在尝试运行 pyspark 程序,但出现错误:

python.exe:查找模块规范时出错 “pyspark.worker”(ModuleNotFoundError:没有名为“pyspark”的模块)

SparkException:Python 工作者无法重新连接。

代码:

from pyspark.sql import SparkSession
from pyspark.sql import Row
import pyspark.sql.functions as func

spark = SparkSession\
    .builder\
    .appName("ReplaceNanByAverage")\
    .config("spark.master", "local")\
    .getOrCreate()

items = [(1,12),(1,float('Nan')),(1,14),(1,10),(2,22),(2,20),(2,float('Nan')),(3,300),
         (3,float('Nan'))]

sc = spark.sparkContext
rdd = sc.parallelize(items)
itemsRdd = rdd.map(lambda x: Row(id=x[0], col1=int(x[1])))
df = itemsRdd.toDF()

我尝试了很多建议的解决方案:

降级 spark 版本 使用 findspark.init() 使用 findspark.init('/path/to/spark_home') 将内容根添加到项目结构中。 使用 .config('PYTHONPATH','pyspark.zip:py4j-0.10.7-src.zip')

但我不断收到同样的错误。

我在 Windows 上的 PyCharm IDE 中工作。

【问题讨论】:

【参考方案1】:

在本地下载并解压spark后,是否可以尝试在bash_Profilebashrc中添加这些行,具体取决于您使用的是mac还是linux? 注意:这里是spark 2.4.0,请根据本地安装替换spark和py4j版本。

export SPARK_HOME=<prefix-to-spark-path>/spark-2.4.0-bin-hadoop2.7 
export PYTHONPATH=$SPARK_HOME/python:$PYTHONPATH 
export PYTHONPATH=$SPARK_HOME/python/lib/py4j-0.10.7-src.zip:$PYTHONPATH

export PYSPARK_PYTHON=<path-to-your-python> 
export PYSPARK_DRIVER_PYTHON=<path-to-your-python>

PATH=$PATH:$SPARK_HOME/bin

请记住,Linux 中的语法略有不同,因此请进行相应调整。完成更改后,执行source ~/.bash_profilesource ~/.bashrc。然后在您的 PyCharm 项目中使用您在上一个文件中链接的相同 python 解释器。应该可以的。

【讨论】:

我使用的是 Windows 然后从控制面板/系统将这些添加为环境变量 我使用 PyCharm,python 的位置是在那里定义的。我设法运行 Python 代码,而不是 pyspark。此外,SPARK_HOME 在环境变量中声明,我还设法使用 Scala 运行 Spark。 这可以理解,但你试过了吗?如果您适当地设置变量,它应该可以解决您的问题。 我确实定义了所有这些环境变量。无论如何,我通过将 Python 从 3.6 版升级到 3.7 版解决了这个问题。【参考方案2】:

我通过将 Python 从 3.6 版本升级到 3.7 解决了这个问题。

【讨论】:

以上是关于查找“pyspark.worker”的模块规范时出错(ModuleNotFoundError:没有名为“pyspark”的模块)的主要内容,如果未能解决你的问题,请参考以下文章

尝试在 Jasmine 规范文件中导入类时出现“语法错误:无法在模块外使用导入语句”

在查找“aiohttp.web”的模块规范时发出 azure 测试聊天机器人“错误(ModuleNotFoundError:没有名为“aiohttp”的模块)

模块循环导入问题,区分py文件的两种用途,模块的搜索路径与查找优先级,软件开发的目录规范

1.模块2.循环导入问题及解决思路3.区分py文件的两种类型4.模块的查找顺序5.模块的绝对导入与相对导入6.项目开发的目录规范

每日灵魂一问-Nodejs文件查找的优先级&Require 方法的文件查找策略?

Android硬件抽象层模块编写规范