【发布时间】:2015-09-09 00:02:57
【问题描述】:
我在运行 pyspark(来自 ipython 笔记本)时遇到库错误,我想在包含 (key, list(int)) 的 RDD 上的 .mapValues 操作中使用来自 pyspark.mllib.stat 的 Statistics.chiSqTest(obs)对。
在主节点上,如果我将 RDD 作为地图收集,并像这样迭代这些值,我就没有问题
keys_to_bucketed = vectors.collectAsMap()
keys_to_chi = {key:Statistics.chiSqTest(value).pValue for key,value in keys_to_bucketed.iteritems()}
但如果我直接在 RDD 上做同样的事情,我会遇到问题
keys_to_chi = vectors.mapValues(lambda vector: Statistics.chiSqTest(vector))
keys_to_chi.collectAsMap()
导致以下异常
Traceback (most recent call last):
File "<ipython-input-80-c2f7ee546f93>", line 3, in chi_sq
File "/Users/atbrew/Development/Spark/spark-1.4.0-bin-hadoop2.6/python/lib/pyspark.zip/pyspark/mllib/stat/_statistics.py", line 238, in chiSqTest
jmodel = callMLlibFunc("chiSqTest", _convert_to_vector(observed), expected)
File "/Users/atbrew/Development/Spark/spark-1.4.0-bin-hadoop2.6/python/lib/pyspark.zip/pyspark/mllib/common.py", line 127, in callMLlibFunc
api = getattr(sc._jvm.PythonMLLibAPI(), name)
AttributeError: 'NoneType' object has no attribute '_jvm'
我在 spark 安装的早期遇到了一个问题,没有看到 numpy,mac-osx 有两个 python 安装(一个来自 brew,一个来自 OS),但我认为我已经解决了这个问题。奇怪的是,这是 spark install 附带的 python 库之一(我之前的问题是 numpy)。
- 安装详细信息
- Max OSX 优胜美地
- Spark spark-1.4.0-bin-hadoop2.6
- python 通过 spark-env.sh 指定为
PYSPARK_PYTHON=/usr/bin/pythonPYTHONPATH=/usr/local/lib/python2.7/site-packages:$PYTHONPATH:$EA_HOME/omnicat/src/main/python:$SPARK_HOME/python/- 别名 ipython-spark-notebook="IPYTHON_OPTS=\"notebook\" pyspark"
- PYSPARK_SUBMIT_ARGS='--num-executors 2 --executor-memory 4g --executor-cores 2'
- 声明 -x PYSPARK_DRIVER_PYTHON="ipython"
【问题讨论】:
-
经过一番挖掘,我发现这是
sc(火花上下文)是None,当抛出异常时。这是否意味着 pyspark 中的工作节点无权访问sc变量?
标签: python macos apache-spark pyspark