Spark(pyspark)在工作节点上调用统计方法有困难
Spark (pyspark) having difficulty calling statistics methods on worker node
我在 运行 pyspark(来自 ipython-notebook)时遇到库错误,我想在 [=] 中使用 pyspark.mllib.stat
中的 Statistics.chiSqTest(obs)
15=] 对包含 (key, list(int)) 对的 RDD 进行操作。
在主节点上,如果我将 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 安装附带的 python 库之一(我之前的问题是关于 numpy)。
- 安装详细信息
- 最大 OSX Yosemite
- Spark spark-1.4.0-bin-hadoop2.6
- python 通过 spark-env.sh 指定为
PYSPARK_PYTHON=/usr/bin/python
PYTHONPATH=/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。 SparkContext 仅在驱动程序节点上定义。
我在 运行 pyspark(来自 ipython-notebook)时遇到库错误,我想在 [=] 中使用 pyspark.mllib.stat
中的 Statistics.chiSqTest(obs)
15=] 对包含 (key, list(int)) 对的 RDD 进行操作。
在主节点上,如果我将 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 安装附带的 python 库之一(我之前的问题是关于 numpy)。
- 安装详细信息
- 最大 OSX Yosemite
- Spark spark-1.4.0-bin-hadoop2.6
- python 通过 spark-env.sh 指定为
PYSPARK_PYTHON=/usr/bin/python
PYTHONPATH=/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。 SparkContext 仅在驱动程序节点上定义。