Импорт pyspark в оболочке python

Это экземпляр другого вопроса на другом форуме, на который никогда не отвечали, поэтому я подумал, что перепрошу его здесь, поскольку у меня такая же проблема. (См. http://geekple.com/blogs/feeds/Xgzu7/posts/351703064084736)

У меня есть Spark правильно установлен на моей машине и я могу запускать программы python с модулями pyspark без ошибок при использовании. /bin/pyspark в качестве моего интерпретатора python.

Однако, когда я пытаюсь запустить обычную оболочку Python, когда я пытаюсь импортировать модули pyspark, я получаю эту ошибку:

from pyspark import SparkContext

и он говорит

"No module named pyspark".

Как я могу это исправить? Есть ли переменная окружения, которую мне нужно установить, чтобы указать Python на заголовки/библиотеки pyspark/etc.? Если моя искра установки/искра/, какие пути pyspark мне нужно включить? Или могут ли программы pyspark запускаться только из интерпретатора pyspark?

Ответ 1

Оказывается, что pyspark bin является LOADING python и автоматически загружает правильные пути библиотеки. Проверьте $SPARK_HOME/bin/pyspark:

# Add the PySpark classes to the Python path:
export PYTHONPATH=$SPARK_HOME/python/:$PYTHONPATH

Я добавил эту строку в мой .bashrc файл, и теперь модули правильно найдены!

Ответ 2

Вот простой метод (если вы не беспокоитесь о том, как это работает !!!)

Используйте findspark

  1. Перейти к вашей оболочке Python

    pip install findspark
    
    import findspark
    findspark.init()
    
  2. импортировать необходимые модули

    from pyspark import SparkContext
    from pyspark import SparkConf
    
  3. Готово!!!

Ответ 3

Если он печатает такую ​​ошибку:

ImportError: нет модуля с именем py4j.java_gateway

Добавьте $SPARK_HOME/python/build в PYTHONPATH:

export SPARK_HOME=/Users/pzhang/apps/spark-1.1.0-bin-hadoop2.4
export PYTHONPATH=$SPARK_HOME/python:$SPARK_HOME/python/build:$PYTHONPATH

Ответ 4

Не запускайте файл py как: python filename.py вместо этого используйте: spark-submit filename.py

Ответ 5

Экспортируя путь SPARK и путь Py4j, он начал работать:

export SPARK_HOME=/usr/local/Cellar/apache-spark/1.5.1
export PYTHONPATH=$SPARK_HOME/libexec/python:$SPARK_HOME/libexec/python/build:$PYTHONPATH
PYTHONPATH=$SPARK_HOME/python/lib/py4j-0.8.2.1-src.zip:$PYTHONPATH 
export PYTHONPATH=$SPARK_HOME/python:$SPARK_HOME/python/build:$PYTHONPATH

Итак, если вы не хотите вводить их каждый раз, когда хотите запустить оболочку Python, вы можете добавить его в свой .bashrc файл

Ответ 6

На Mac я использую Homebrew для установки Spark (формула "apache-spark" ). Затем я устанавливаю PYTHONPATH таким образом, чтобы импорт Python работал:

export SPARK_HOME=/usr/local/Cellar/apache-spark/1.2.0
export PYTHONPATH=$SPARK_HOME/libexec/python:$SPARK_HOME/libexec/python/build:$PYTHONPATH

Замените "1.2.0" на фактическую версию apache-spark на вашем mac.

Ответ 7

Для выполнения Spark в pyspark для совместной работы требуются два компонента:

  • pyspark пакет python
  • Экземпляр Spark в JVM

Когда вы запускаете вещи с помощью spark-submit или pyspark, эти скрипты позаботятся обо всех, то есть они настраивают ваши PYTHONPATH, PATH и т.д., так что ваш script может найти pyspark, а также запустить экземпляр искры, настройка в соответствии с вашими параметрами, например --master X

В качестве альтернативы можно обойти эти сценарии и запустить ваше искровое приложение непосредственно в интерпретаторе python, например python myscript.py. Это особенно интересно, когда искровые скрипты начинают становиться более сложными и в конечном итоге получают свои собственные аргументы.

  • Убедитесь, что пакет pyspark может быть найден интерпретатором Python. Как уже обсуждалось, добавьте источник spark/python в PYTHONPATH или непосредственно установите pyspark, используя команду pip install.
  • Задайте параметры искрового экземпляра из script (те, которые раньше были переданы в pyspark).
    • Для конфигураций искровых разрядов, которые вы обычно устанавливали с помощью --conf, они определяются с помощью объекта конфигурации (или строковых конфигураций) в SparkSession.builder.config
    • Для основных опций (например, --master или --driver-mem) на данный момент вы можете установить их, записав переменную среды PYSPARK_SUBMIT_ARGS. Чтобы сделать вещи чище и безопаснее, вы можете установить ее из самого Python, и искра будет читать ее при запуске.
  • Запустите экземпляр, который требует, чтобы вы вызывали getOrCreate() из объекта-конструктора.

Таким образом, ваш script может иметь что-то вроде этого:

from pyspark.sql import SparkSession

if __name__ == "__main__":
    if spark_main_opts:
        # Set main options, e.g. "--master local[4]"
        os.environ['PYSPARK_SUBMIT_ARGS'] = spark_main_opts + " pyspark-shell"

    # Set spark config
    spark = (SparkSession.builder
             .config("spark.checkpoint.compress", True)
             .config("spark.jars.packages", "graphframes:graphframes:0.5.0-spark2.1-s_2.11")
             .getOrCreate())

Ответ 8

Чтобы избавиться от ImportError: No module named py4j.java_gateway, вам нужно добавить следующие строки:

import os
import sys


os.environ['SPARK_HOME'] = "D:\python\spark-1.4.1-bin-hadoop2.4"


sys.path.append("D:\python\spark-1.4.1-bin-hadoop2.4\python")
sys.path.append("D:\python\spark-1.4.1-bin-hadoop2.4\python\lib\py4j-0.8.2.1-src.zip")

try:
    from pyspark import SparkContext
    from pyspark import SparkConf

    print ("success")

except ImportError as e:
    print ("error importing spark modules", e)
    sys.exit(1)

Ответ 9

В Windows 10 для меня работали. Я добавил следующие переменные среды, используя "Настройки" > "Изменить переменные среды" для вашей учетной записи:

SPARK_HOME=C:\Programming\spark-2.0.1-bin-hadoop2.7
PYTHONPATH=%SPARK_HOME%\python;%PYTHONPATH%

(измените "C:\Programming \..." в папку, в которой вы установили искру)

Ответ 10

Для пользователей Linux следующее правильное (и не жесткое) способ включения pyspark libaray в PYTHONPATH. Необходимы обе части PATH:

  • Путь к самому модулю Pyspys pyspark и
  • Путь к zipped-библиотеке, на которую опирается модуль pyspark при импорте

Обратите внимание, что версия zipped-библиотеки динамически определена, поэтому мы не жестко ее кодируем.

export PYTHONPATH=${SPARK_HOME}/python/:$(echo ${SPARK_HOME}/python/lib/py4j-*-src.zip):${PYTHONPATH}

Ответ 11

Я запускаю искровой кластер на CentOS VM, который устанавливается из пакетов cloudera yum.

Придется задавать следующие переменные для запуска pyspark.

export SPARK_HOME=/usr/lib/spark;
export PYTHONPATH=$SPARK_HOME/python:$SPARK_HOME/python/lib/py4j-0.9-src.zip:$PYTHONPATH

Ответ 12

export PYSPARK_PYTHON=/home/user/anaconda3/bin/python
export PYSPARK_DRIVER_PYTHON=jupyter
export PYSPARK_DRIVER_PYTHON_OPTS='notebook'

Это то, что я сделал для использования моего дистрибутива Anaconda с Spark. Это независимая версия Spark. Вы можете перенести первую строку на ящик python вашего пользователя. Кроме того, с Spark 2.2.0 PySpark доступен как автономный пакет на PyPi но я еще не проверял это.

Ответ 13

У меня была та же проблема.

Также убедитесь, что вы используете правую версию python, и вы устанавливаете ее с правой версией pip. в моем случае: у меня были оба python 2.7 и 3.x. Я установил pyspark с

pip2.7 установить pyspark

и он работал.

Ответ 14

Я получил эту ошибку, потому что python script, который я пытался отправить, назывался pyspark.py(facepalm). Исправлено: установить PYTHONPATH в соответствии с рекомендациями выше, а затем переименовать script в pyspark_test.py и очистить файл pyspark.pyc, который был создан на основе исходного имени моих сценариев, и очистил эту ошибку.

Ответ 15

В случае DSE (DataStax Cassandra и Spark) Следующее место должно быть добавлено в PYTHONPATH

export PYTHONPATH=/usr/share/dse/resources/spark/python:$PYTHONPATH

Затем используйте dys pyspark, чтобы получить модули в пути.

dse pyspark

Ответ 16

У меня была такая же проблема и добавила бы одну вещь к предлагаемым решениям выше. При использовании Homebrew в Mac OS X для установки Spark вам нужно будет исправить адрес пути py4j, чтобы включить libexec в путь (не забывая изменить версию py4j на тот, который у вас есть);

PYTHONPATH=$SPARK_HOME/libexec/python/lib/py4j-0.9-src.zip:$PYTHONPATH

Ответ 17

Вы также можете создать Docker-контейнер с Alpine в качестве ОС и установить Python и Pyspark в качестве пакетов. Это будет все в контейнере.

Ответ 18

В моем случае это была установка на другом python dist_package (python 3.5), тогда как я использовал python 3.6, поэтому помогло следующее:

python -m pip install pyspark

Ответ 19

Вы можете получить pyspark path в python, используя pip (если вы установили pyspark, используя PIP), как показано ниже

pip show pyspark