Exec pyspark автономный скрипт без спарк-отправки - PullRequest
0 голосов
/ 03 июня 2018

Я новичок в установке 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?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 03 июня 2018

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

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

./test.py

95

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

0 голосов
/ 03 июня 2018

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

  • Я установил Spark версии 1.6.0 и Python 2.6.6

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

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

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

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

...