Контекст 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 на моем 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
.