Spark(pyspark)在工作节点上调用统计方法时遇到困难

时间:2015-06-23 09:10:34

标签: python macos apache-spark pyspark

我在运行pyspark时遇到了库错误(来自ipython-notebook),我想在我的RDD包含的Statistics.chiSqTest(obs)操作中使用来自pyspark.mllib.stat的{​​{1}}(密钥) ,list(int))对。

在主节点上,如果我将RDD收集为地图,并迭代这些值,我就没有问题

.mapValues

但如果我直接在RDD上做同样的事情我会遇到问题

keys_to_bucketed = vectors.collectAsMap()
keys_to_chi = {key:Statistics.chiSqTest(value).pValue for key,value in keys_to_bucketed.iteritems()}

导致以下异常

keys_to_chi = vectors.mapValues(lambda vector: Statistics.chiSqTest(vector))
keys_to_chi.collectAsMap()

我早期在我的spark安装中遇到问题没有看到numpy,mac-osx有两个python安装(一个来自brew,另一个来自操作系统),但我认为我已经解决了这个问题。这里奇怪的是,这是与spark安装一起发布的python库之一(我以前的问题是numpy)。

  1. 安装详细信息
    • Max OSX Yosemite
    • Spark spark-1.4.0-bin-hadoop2.6
    • python通过spark-env.sh指定为
    • 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'
    • PYSPARK_PYTHON=/usr/bin/python
    • alias ipython-spark-notebook =“IPYTHON_OPTS = \”notebook \“pyspark”
    • PYSPARK_SUBMIT_ARGS =' - num-executors 2 --executor-memory 4g --executor-cores 2'
    • 声明-x PYSPARK_DRIVER_PYTHON =“ipython”

1 个答案:

答案 0 :(得分:2)

正如您在评论中注意到的那样,工作节点上的sc为None。 SparkContext仅在驱动程序节点上定义。