![](/img/trans.png)
[英]Pyspark - ImportError: cannot import name 'SparkContext' from 'pyspark'
[英]pyspark ImportError: cannot import name accumulators
目標:我想在我的pycharm IDE中對apache-spark pyspark進行適當的解釋。
問題:我目前收到以下錯誤:
ImportError: cannot import name accumulators
我正在關注以下博客來幫助我完成整個過程。 http://renien.github.io/blog/accessing-pyspark-pycharm/
由於我的代碼采用了except路徑,我親自擺脫了嘗試:除了:只是為了看看確切的錯誤是什么。
在此之前,我收到以下錯誤:
ImportError: No module named py4j.java_gateway
只需在bash中輸入'$ sudo pip install py4j'即可修復此問題。
我的代碼目前看起來像下面的塊:
import os
import sys
# Path for spark source folder
os.environ['SPARK_HOME']="[MY_HOME_DIR]/spark-1.2.0"
# Append pyspark to Python Path
sys.path.append("[MY_HOME_DIR]/spark-1.2.0/python/")
try:
from pyspark import SparkContext
print ("Successfully imported Spark Modules")
except ImportError as e:
print ("Can not import Spark Modules", e)
sys.exit(1)
我的問題:
1.這個錯誤的來源是什么? 原因是什么? 2.如何解決問題,以便在pycharm編輯器中運行pyspark。
注意:我在pycharm中使用的當前解釋器是Python 2.7.8(〜/ anaconda / bin / python)
提前謝謝!
唐
它位於變量PYTHONPATH周圍,它指定python模塊搜索路徑。
因為大多數pyspark運行良好,你可以參考shell腳本pyspark,並看到PYTHONPATH設置如下所示。
PYTHONPATH = / usr / lib中/火花/蟒/ LIB / py4j-0.8.2.1-src.zip:/ usr / lib中/火花/蟒。
我的環境是Cloudera Qickstart VM 5.3。
希望這可以幫助。
這看起來像一個循環依賴性bug。
在MY_HOME_DIR]/spark-1.2.0/python/pyspark/context.py
刪除或注釋掉該行
from pyspark import accumulators
。
這是從頂部開始的大約6行代碼。
我在這里向Spark項目提出了一個問題:
我遇到了同樣的錯誤。 我剛剛安裝了py4j。
sudo pip install py4j
沒有必要設置bashrc。
我使用cdh 5.3遇到了同樣的問題
最后,這實際上很容易解決。 我注意到腳本/ usr / lib / spark / bin / pyspark具有為ipython定義的變量
我安裝了anaconda到/ opt / anaconda
export PATH=/opt/anaconda/bin:$PATH
#note that the default port 8888 is already in use so I used a different port
export IPYTHON_OPTS="notebook --notebook-dir=/home/cloudera/ipython-notebook --pylab inline --ip=* --port=9999"
最后....
執行
/usr/bin/pyspark
現在按預期運作。
我也遇到過這個問題。 為了解決這個問題,我在~/spark/spark/python/pyspark/context.py
注釋了第28行,該文件導致了錯誤:
# from pyspark import accumulators
from pyspark.accumulators import Accumulator
由於累加器導入似乎由以下行(29)涵蓋,似乎沒有問題。 Spark現在正常運行(在pip install py4j
)。
在Pycharm中,在運行上面的腳本之前,請確保已解壓縮py4j * .zip文件。 並在腳本sys.path.append(“path to spark * / python / lib”)中添加其引用
它對我有用。
To get rid of **ImportError: No module named py4j.java_gateway** you need to add following lines
import os
import sys
os.environ['SPARK_HOME'] = "D:\python\spark-1.4.1-bin-hadoop2.4"
sys.path.append("D:\python\spark-1.4.1-bin-hadoop2.4\python")
sys.path.append("D:\python\spark-1.4.1-bin-hadoop2.4\python\lib\py4j-0.8.2.1-src.zip")
try:
from pyspark import SparkContext
from pyspark import SparkConf
print ("success")
except ImportError as e:
print ("error importing spark modules", e)
sys.exit(1)
首先,設置你的環境變量
export SPARK_HOME=/home/.../Spark/spark-2.0.1-bin-hadoop2.7
export PYTHONPATH=$SPARK_HOME/python/:$SPARK_HOME/python/lib/py4j-0.10.3-src.zip:$PYTHONPATH
PATH="$PATH:$JAVA_HOME/bin:$SPARK_HOME/bin:$PYTHONPATH"
確保使用自己的版本名稱
然后,重啟! 驗證您的設置很重要。
我能夠在Windows上找到解決方案,但不能確定它的根本原因。
如果你打開accumulators.py,那么你會看到首先有一個標題注釋,然后是幫助文本,然后是import語句。 在注釋塊之后和幫助文本之前移動一個或多個import語句。 這適用於我的系統,我能夠導入pyspark而沒有任何問題。
如果你剛剛升級到新的spark版本,請確保新版本的py4j在你的PATH中,因為每個新的spark版本都帶有一個新的py4j版本。
在我的情況下,它是:“$ SPARK_HOME / python / lib / py4j-0.10.3-src.zip”用於spark 2.0.1而不是舊的“$ SPARK_HOME / python / lib / py4j-0.10.1-src.zip” “對於火花2.0.0
唯一對我有用的是,去火花的基礎文件夾。 然后去accumulators.py
一開始,使用了錯誤的多行命令。 刪除一切。
你很高興去!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.