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

时间:2019-09-23 08:18:35

标签: python apache-spark pyspark pycharm

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

  

python.exe:查找以下产品的模块规范时出错   'pyspark.worker'(ModuleNotFoundError:没有名为'pyspark'的模块)

     

SparkException:Python worker无法重新连接。

代码:

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中工作。

2 个答案:

答案 0 :(得分:0)

在本地下载并提取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解释器。应该可以。

答案 1 :(得分:0)

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