Автономный скрипт pyspark без искры

Я новичок в установке Spark на машине Linux и, возможно, у меня есть базовый вопрос: я установил Spark версии 1.6.0 и Python 2.6.6.

В интерактивном режиме Spark я могу запускать эти простые команды для подсчета строк в файле README.md.

Однако я хочу иметь возможность создать автономный скрипт Python и достичь того же результата, но получаю ошибки.

Мой код Python в test.py -

#!/usr/bin/python
import pyspark
from pyspark import SparkContext, SparkConf

if __name__ == "__main__":
    conf = SparkConf().setAppName("word count").setMaster("local[3]")
    sc = SparkContext(conf = conf)


    rdd = sc.textFile("/opt/spark/README.md")

    print(rdd.count())

Если я запустил это как -

spark-submit ./test.py 

Я получаю правильный результат.

95

Мой вопрос в том, почему я не могу запустить это просто ...

./test.py 

поскольку я импортирую pyspark и SparkContext в свой скрипт python.

Я получаю ошибку -

Traceback (most recent call last):
  File "./test.py", line 8, in <module>
    sc = SparkContext(conf = conf)
  File "/usr/local/lib/python2.7/site-packages/pyspark/context.py", line 118, in __init__
    conf, jsc, profiler_cls)
  File "/usr/local/lib/python2.7/site-packages/pyspark/context.py", line 188, in _do_init
    self._javaAccumulator = self._jvm.PythonAccumulatorV2(host, port)
TypeError: 'JavaPackage' object is not callable

Я знаю, что мне не хватает где-то добавления банок, согласно моим поискам в Google, но я не думаю, что понимаю, что именно здесь происходит. Я был бы признателен, если бы кто-нибудь мог указать мне на базовое руководство по настройке переменных искры и CLASSPATH.

Я уже читал этот вопрос, но не так подробно -

В чем разница между spark-submit и pyspark?

Спасибо.


person aau22    schedule 03.06.2018    source источник


Ответы (2)


Давайте сосредоточимся на двух частях информации:

  • # P2 #
  • self._javaAccumulator = self._jvm.PythonAccumulatorV2(host, port)
    

Эти части предполагают, что вы неправильно настроили установку Spark:

  • Вы полагаете, что используете Spark 1.6 (похоже, это версия jar-файлов на вашем пути).
  • Пакет Python в пути использует код, представленный в Spark 2.1.0 (SPARK-16861).

Скорее всего, это результат неправильной установки PYTHONPATH или эквивалентной переменной среды.

person Alper t. Turker    schedule 03.06.2018
comment
Я думаю, что это именно то, что я ищу, как настроить переменные среды Spark и Python. В руководствах, которым я следую, не упоминайте об этом в шагах. - person aau22; 03.06.2018
comment
Я нашел этот пост весьма полезным, надеюсь, он поможет кому-то другому - efimeres.com/ 03.03.2016 / setup-spark-standalone - person aau22; 03.06.2018

user8371915 - Вы указали мне правильное направление, проблема заключалась в том, что PYTHONPATH вообще не настраивался.

Я нашел эту ссылку, чтобы охватить всю необходимую мне информацию, и смог запустить свой код с помощью всего -

./test.py

95

http://efimeres.com/2016/03/setup-spark-standalone/ < / а>

person aau22    schedule 03.06.2018