ipython pyspark'range'对象没有属性'defaultParallelism'

时间:2015-12-26 05:18:37

标签: python ipython-notebook pyspark

我已经为ipython设置了pyspark,从ipython中,我可以成功导入pyspark。

我在anaconda,python 3.4中使用ipython。这是一个关于问题的快照。

enter image description here

请注意,此命令适用于pyspark

Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /__ / .__/\_,_/_/ /_/\_\   version 1.5.2
      /_/

Using Python version 2.7.9 (default, Apr  2 2015 15:33:21)
SparkContext available as sc, HiveContext available as sqlContext.
>>> sc.parallelize(range(10), 3)
ParallelCollectionRDD[0] at parallelize at PythonRDD.scala:423
>>> 
>>> irdd = sc.parallelize(range(10), 3)
>>> irdd.collect()
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]                                                  
>>> irdd.glom().collect()
[[0, 1, 2], [3, 4, 5], [6, 7, 8, 9]]
>>> 

我已将其配置如下

export SPARK_HOME=$HOME/apps/spark
export PYTHONPATH=$SPARK_HOME/python/:$PYTHONPATH
export PYTHONPATH=$SPARK_HOME/python/lib/py4j-0.8.2.1-src.zip:$PYTHONPATH

2 个答案:

答案 0 :(得分:3)

这里的问题是您在Style.Resources类上调用parallelize方法而不是SparkContext的实例:

在您的IPython笔记本代码中,导入语句

SparkContext

只是将名称from pyspark import SparkContext as sc 提供给SparkContext类,而不是创建新的SparkContext。

有关创建SparkContext实例的说明,请参阅Spark编程指南中的"Initializing Spark"部分。例如,要模拟在sc中创建的本地上下文,请尝试

spark-shell

答案 1 :(得分:0)

添加Josh的回答: 我遇到了同样的问题,确实将SparkContext导入为sc或只是创建sc = SparkContext与sc = SparkContext()不同。

然而,我被告知我有多个SparkContexts正在运行而且它讨厌我。

我的解决方案是使用:

from pyspark import SparkContext, SparkConf

conf = SparkConf().setAppName("miniProject").setMaster("local[*]")
sc = SparkContext.getOrCreate(conf)

然后当我跑:

sc.parallelize([1, 2, 3, 4, 5, 6, 7, 8, 9, 10],4).map(lambda x: x**2).sum()

我得到了385的预期答案。 因此,关键是getOrCreate方法,因为它可以让您找到现有的上下文并使用它。