簡體   English   中英

查找“pyspark.worker”的模塊規范時出錯(ModuleNotFoundError:沒有名為“pyspark”的模塊)

[英]Error while finding module specification for 'pyspark.worker' (ModuleNotFoundError: No module named 'pyspark')

我正在嘗試運行 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 工作。

在本地下載並提取 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 解釋器。 那應該行得通。

我通過將 Python 從版本 3.6 升級到 3.7 解決了這個問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM