加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

anaconda – pyspark – 错误仅出现在IPython中,但不出现在vanil

发布时间:2020-12-20 13:07:38 所属栏目:Python 来源:网络整理
导读:如果我通过在控制台中键入/usr/bin/pyspark来启动pyspark,则以下示例代码运行时没有任何错误.但是,如果我将它与I Python一起使用,或者通过调用 $IPYTHON_OPTS="notebook" /usr/bin/pyspark # notebook 或者 $IPYTHON=1 /usr/bin/pyspark 然后提出异常. 这是
如果我通过在控制台中键入/usr/bin/pyspark来启动pyspark,则以下示例代码运行时没有任何错误.但是,如果我将它与I Python一起使用,或者通过调用

$IPYTHON_OPTS="notebook" /usr/bin/pyspark # notebook

或者

$IPYTHON=1 /usr/bin/pyspark

然后提出异常.

这是代码:

from pyspark import SparkContext,SparkConf
from pyspark import SQLContext
from pyspark.sql.types import *
# sc is a SparkContex object created when pyspark is invoked
sqc = SQLContext(sc)

这是错误消息:

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-1-f0bbbc9cdb50> in <module>()
      3 from pyspark.sql.types import *
      4 # sc is a SparkContex object created when pyspark is invoked
----> 5 sqc = SQLContext(sc)

/opt/cloudera/parcels/CDH-5.4.2-1.cdh5.4.2.p0.2/lib/spark/python/pyspark/sql/context.py in __init__(self,sparkContext,sqlContext)
     91         """
     92         self._sc = sparkContext
---> 93         self._jsc = self._sc._jsc
     94         self._jvm = self._sc._jvm
     95         self._scala_SQLContext = sqlContext

AttributeError: 'module' object has no attribute '_jsc'

是什么导致此错误,我该如何解决?

UPDATE

事实证明,如果我在Linux上使用Anaconda python发行版,则存在问题:

~$ipython --version
    4.0.0
    ~$python --version
    Python 2.7.10 :: Anaconda 2.3.0 (64-bit)

但是,如果我禁用anaconda发行版并使用系统附带的Python,一切都运行良好

$ipython --version
    4.0.0
    $python --version
    Python 2.7.3
    $cat /etc/issue
    Debian GNU/Linux 7 n l

所以,问题在于Anaconda,但仍然不知道问题是什么

解决方法

不确定具体的错误,因为它应该有香草和anaconda火花相同的问题,但是,你可以检查几件事:

确保您的驱动程序和工作程序上都安装了相同的python版本.不同的版本可能会导致序列化问题.

IPYTHON_OPTS通常已弃用.相反,我定义了以下环境变量:

# tells pyspark to use notebook
export PYSPARK_DRIVER_PYTHON_OPS="notebook"
# tells pyspark to use the jupyter executable instead of python. In your case you might want this to be ipython instead
export PYSPARK_DRIVER_PYTHON=/opt/anaconda2/bin/jupyter
# tells pyspark where the python executable is on the executors. It MUST be the same version of python (preferably with the same packages if you are using them in a UDF or similar
export PYSPARK_PYTHON=/opt/anaconda2/bin/python

当然,我发现你没有在命令行中添加一个master,所以如果你没有改变你的spark默认值(即没有worker),这将在本地运行spark.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读