Контекст Spark 'sc' не определен

Я новичок в Spark, и я пытаюсь установить PySpark, ссылаясь на следующий сайт.

http://ramhiser.com/2015/02/01/configuring-ipython-notebook-support-for-pyspark/

Я попытался установить как встроенный пакет, так и путем создания пакета Spark через SBT.

когда я пытаюсь запустить код python в IPython Notebook, я получаю приведенную ниже ошибку.

    NameError                                 Traceback (most recent call last)
   <ipython-input-1-f7aa330f6984> in <module>()
      1 # Check that Spark is working
----> 2 largeRange = sc.parallelize(xrange(100000))
      3 reduceTest = largeRange.reduce(lambda a, b: a + b)
      4 filterReduceTest = largeRange.filter(lambda x: x % 7 == 0).sum()
      5 

      NameError: name 'sc' is not defined

в окне команды я вижу ниже ошибка.

<strong>Failed to find Spark assembly JAR.</strong>
<strong>You need to build Spark before running this program.</strong>

обратите внимание, что я получил приглашение scala при выполнении spark-shell команда

обновление:

С помощью друга я могу исправить проблему, связанную с Spark assembly JAR, исправив содержимое .ipython/profile_pyspark/startup/00-pyspark-setup.py файл

теперь у меня есть только проблема контекстной переменной Spark. Изменение названия, чтобы должным образом отразить мою текущую проблему.

11 ответов


одно решение добавляет pyspark-shell к переменной среды оболочки PYSPARK_SUBMIT_ARGS:

export PYSPARK_SUBMIT_ARGS="--master local[2] pyspark-shell"

изменения python/pyspark/java_gateway.py , который требует PYSPARK_SUBMIT_ARGS включает pyspark-shell если переменная PYSPARK_SUBMIT_ARGS задана пользователем.


вам нужно сделать следующее после того, как у вас есть pyspark на вашем пути:

from pyspark import SparkContext
sc =SparkContext()

вы должны создать экземпляр SparkContext следующим образом:

импорт:

from pyspark import SparkContext

и затем:

sc =SparkContext.getOrCreate()

NB:sc =SparkContext.getOrCreate() хорошо, чем sc =SparkContext().


просто небольшое улучшение. Добавьте следующее поверх файла скрипта python.

#! /bin/python
from pyspark import SparkContext, SparkConf
sc =SparkContext()

# your code starts here

я добавил следующие строки, предоставленные Venu.

from pyspark import SparkContext
sc =SparkContext()

затем следующая последующая ошибка была решена путем удаления переменной среды PYSPARK_SUBMIT_ARGS.

C:\Spark\spark-1.3.1-bin-hadoop2.6\python\pyspark\java_gateway.pyc in launch_gateway() 77 callback_socket.close() 78 if gateway_port is None: 
---> 79 raise Exception("Java gateway process exited before sending the driver its port number") 
80 
81 # In Windows, ensure the Java child processes do not linger after Python has exited. Exception: Java gateway process exited before sending the driver its port number

Я также столкнулся с Java gateway process exited before sending the driver its port number сообщение об ошибке.

Я мог бы решить эту проблему, загрузив одну из версий, которые предварительно построены для Hadoop (я использовал один для hadoop 2.4). Поскольку я не использую Hadoop, я понятия не имею, почему это что-то изменило, но теперь это работает безупречно для меня...


Я получал аналогичную ошибку, пытаясь заставить pySpark работать через PyCharm, и я заметил в журнале, как раз перед этой ошибкой я получал эту ошибку:

env: не найдено

Я проследил это до того, что у меня не было набора переменных среды Java home.. поэтому я добавил: ОС.энвирон['переменной JAVA_HOME'] = "в/usr/Ява/jdk1.7.0_67-Cloudera в"

к моему скрипту ( я знаю, что это, вероятно, не лучшее место для него) и ошибка уходит, и я получаю свою искру. объект создан


это сработало для меня в версии spark 2.3.1

from pyspark import SparkContext
sc = SparkContext()

Spark на моем Mac-1.6.0, поэтому добавление pyspark-shell не решил проблему. Что работал для меня после ответа здесь by @karenyng

pyspark_submit_args = os.environ.get("PYSPARK_SUBMIT_ARGS", "")
if not "pyspark-shell" in pyspark_submit_args: pyspark_submit_args += " pyspark-shell"
os.environ["PYSPARK_SUBMIT_ARGS"] = pyspark_submit_args

У меня была такая же проблема в моем случае, проблема была в другом ноутбуке (в последних версиях они показаны зеленым цветом). Я выбрал и выключил один из них, и он работал нормально.

извините за вызов старого потока, но это может помочь кому-то:)


этот скрипт работал для меня (в Linux):

#!/bin/bash

export PYSPARK_DRIVER_PYTHON=ipython
export PYSPARK_DRIVER_PYTHON_OPTS="--pylab -c 'from pyspark import SparkContext; sc=SparkContext()' -i"
export PYSPARK_SUBMIT_ARGS="--master local[2] pyspark-shell"

pyspark

называть pyspark когда я звоню туда, я предполагаю, что путь установки" spark/bin " находится в PATH переменной. Если нет, позвоните вместо /path/to/spark/bin/pyspark.