簡體   English   中英

pyspark ImportError:無法導入名稱累加器

[英]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項目提出了一個問題:

https://issues.apache.org/jira/browse/SPARK-4974

我遇到了同樣的錯誤。 我剛剛安裝了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.

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