目标:我正在尝试在我的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)
提前致谢!
唐
答案 0 :(得分:7)
它位于变量PYTHONPATH周围,它指定python模块搜索路径。
因为pyspark运行良好,你可以参考shell脚本pyspark,看看PYTHONPATH设置如下所示。
PYTHONPATH = / usr / lib中/火花/蟒/ LIB / py4j-0.8.2.1-src.zip:/ usr / lib中/火花/蟒
我的环境是Cloudera Qickstart VM 5.3。
希望这有帮助。
答案 1 :(得分:4)
这对我来说就像一个循环依赖性错误。
在MY_HOME_DIR]/spark-1.2.0/python/pyspark/context.py
删除或注释掉
from pyspark import accumulators
。
这是从顶部开始的大约6行代码。
我在这里向Spark项目提出了一个问题:
答案 2 :(得分:2)
我遇到了同样的错误。 我刚刚安装了py4j。
sudo pip install py4j
没有必要设置bashrc。
答案 3 :(得分:1)
我使用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
现在按预期运作。
答案 4 :(得分:1)
我也遇到了这个问题。为了解决这个问题,我在r
中注释了导致错误的文件中的第28行:
~/spark/spark/python/pyspark/context.py
由于累加器导入似乎包含在以下行(29)中,因此似乎不是问题。 Spark现在正常运行(# from pyspark import accumulators
from pyspark.accumulators import Accumulator
之后)。
答案 5 :(得分:1)
在Pycharm中,在运行上面的脚本之前,请确保已解压缩py4j * .zip文件。并在脚本sys.path.append中添加它的引用(" spark * / python / lib&#34的路径;)
它对我有用。
答案 6 :(得分:1)
this.props.navigator.setButtons({
rightButtons: [
{ title: 'Reset', id: 'resetButton' },
{ title: 'Submit', id: 'submitButton' }
]
});
答案 7 :(得分:1)
首先,设置环境var
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"
确保使用自己的版本名称
然后重启!验证您的设置非常重要。
答案 8 :(得分:0)
我能够在Windows上找到解决方法,但不能确定它的根本原因。
如果你打开accumulators.py,那么你会看到首先有一个标题注释,然后是帮助文本,然后是import语句。在注释块之后和帮助文本之前移动一个或多个import语句。这适用于我的系统,我能够毫无问题地导入pyspark。
答案 9 :(得分:0)
如果你刚刚升级到新的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" for spark 2.0.0
答案 10 :(得分:0)
唯一能解决的问题是,去火花的基础文件夹。然后去accumulators.py
开始时,使用了错误的多行命令。删除一切。
你很高兴去!