Подтвердить что ты не робот

Как связать PyCharm с PySpark?

Я новичок в искры Apache и, видимо, я установил apache-spark с homebrew в моем macbook:

Last login: Fri Jan  8 12:52:04 on console
[email protected]:~$ pyspark
Python 2.7.10 (default, Jul 13 2015, 12:05:58)
[GCC 4.2.1 Compatible Apple LLVM 6.1.0 (clang-602.0.53)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
Using Spark default log4j profile: org/apache/spark/log4j-defaults.properties
16/01/08 14:46:44 INFO SparkContext: Running Spark version 1.5.1
16/01/08 14:46:46 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
16/01/08 14:46:47 INFO SecurityManager: Changing view acls to: user
16/01/08 14:46:47 INFO SecurityManager: Changing modify acls to: user
16/01/08 14:46:47 INFO SecurityManager: SecurityManager: authentication disabled; ui acls disabled; users with view permissions: Set(user); users with modify permissions: Set(user)
16/01/08 14:46:50 INFO Slf4jLogger: Slf4jLogger started
16/01/08 14:46:50 INFO Remoting: Starting remoting
16/01/08 14:46:51 INFO Remoting: Remoting started; listening on addresses :[akka.tcp://[email protected]:50199]
16/01/08 14:46:51 INFO Utils: Successfully started service 'sparkDriver' on port 50199.
16/01/08 14:46:51 INFO SparkEnv: Registering MapOutputTracker
16/01/08 14:46:51 INFO SparkEnv: Registering BlockManagerMaster
16/01/08 14:46:51 INFO DiskBlockManager: Created local directory at /private/var/folders/5x/k7n54drn1csc7w0j7vchjnmc0000gn/T/blockmgr-769e6f91-f0e7-49f9-b45d-1b6382637c95
16/01/08 14:46:51 INFO MemoryStore: MemoryStore started with capacity 530.0 MB
16/01/08 14:46:52 INFO HttpFileServer: HTTP File server directory is /private/var/folders/5x/k7n54drn1csc7w0j7vchjnmc0000gn/T/spark-8e4749ea-9ae7-4137-a0e1-52e410a8e4c5/httpd-1adcd424-c8e9-4e54-a45a-a735ade00393
16/01/08 14:46:52 INFO HttpServer: Starting HTTP Server
16/01/08 14:46:52 INFO Utils: Successfully started service 'HTTP file server' on port 50200.
16/01/08 14:46:52 INFO SparkEnv: Registering OutputCommitCoordinator
16/01/08 14:46:52 INFO Utils: Successfully started service 'SparkUI' on port 4040.
16/01/08 14:46:52 INFO SparkUI: Started SparkUI at http://192.168.1.64:4040
16/01/08 14:46:53 WARN MetricsSystem: Using default name DAGScheduler for source because spark.app.id is not set.
16/01/08 14:46:53 INFO Executor: Starting executor ID driver on host localhost
16/01/08 14:46:53 INFO Utils: Successfully started service 'org.apache.spark.network.netty.NettyBlockTransferService' on port 50201.
16/01/08 14:46:53 INFO NettyBlockTransferService: Server created on 50201
16/01/08 14:46:53 INFO BlockManagerMaster: Trying to register BlockManager
16/01/08 14:46:53 INFO BlockManagerMasterEndpoint: Registering block manager localhost:50201 with 530.0 MB RAM, BlockManagerId(driver, localhost, 50201)
16/01/08 14:46:53 INFO BlockManagerMaster: Registered BlockManager
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /__ / .__/\_,_/_/ /_/\_\   version 1.5.1
      /_/

Using Python version 2.7.10 (default, Jul 13 2015 12:05:58)
SparkContext available as sc, HiveContext available as sqlContext.
>>>

Я хотел бы начать играть, чтобы узнать больше о MLlib. Тем не менее, я использую Pycharm для написания скриптов в python. Проблема в том, что когда я отправляюсь в Pycharm и пытаюсь вызвать pyspark, Pycharm не может найти модуль. Я попытался добавить путь к Pycharm следующим образом:

Невозможно связать pycharm с искру

Затем из blog я пробовал это:

import os
import sys

# Path for spark source folder
os.environ['SPARK_HOME']="/Users/user/Apps/spark-1.5.2-bin-hadoop2.4"

# Append pyspark  to Python Path
sys.path.append("/Users/user/Apps/spark-1.5.2-bin-hadoop2.4/python/pyspark")

try:
    from pyspark import SparkContext
    from pyspark import SparkConf
    print ("Successfully imported Spark Modules")

except ImportError as e:
    print ("Can not import Spark Modules", e)
    sys.exit(1)

И все еще не могу начать использовать PySpark с Pycharm, любую идею о том, как "связать" PyCharm с apache-pyspark?.

Update:

Затем я ищу путь apache-spark и python для установки переменных среды Pycharm:

apache-spark path:

[email protected]:~$ brew info apache-spark
apache-spark: stable 1.6.0, HEAD
Engine for large-scale data processing
https://spark.apache.org/
/usr/local/Cellar/apache-spark/1.5.1 (649 files, 302.9M) *
  Poured from bottle
From: https://github.com/Homebrew/homebrew/blob/master/Library/Formula/apache-spark.rb

Путь python:

[email protected]:~$ brew info python
python: stable 2.7.11 (bottled), HEAD
Interpreted, interactive, object-oriented programming language
https://www.python.org
/usr/local/Cellar/python/2.7.10_2 (4,965 files, 66.9M) *

Затем с приведенной выше информацией я попытался установить переменные среды следующим образом:

configuration 1

Любая идея о том, как правильно связать Pycharm с pyspark?

Затем, когда я запускаю python script с указанной выше конфигурацией, у меня есть это исключение:

/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/bin/python2.7 /Users/user/PycharmProjects/spark_examples/test_1.py
Traceback (most recent call last):
  File "/Users/user/PycharmProjects/spark_examples/test_1.py", line 1, in <module>
    from pyspark import SparkContext
ImportError: No module named pyspark

UPDATE: Затем я попробовал эту конфигурацию, предложенную @zero323

Конфигурация 1:

/usr/local/Cellar/apache-spark/1.5.1/ 

conf 1

из

 [email protected]:/usr/local/Cellar/apache-spark/1.5.1$ ls
CHANGES.txt           NOTICE                libexec/
INSTALL_RECEIPT.json  README.md
LICENSE               bin/

Конфигурация 2:

/usr/local/Cellar/apache-spark/1.5.1/libexec 

введите описание изображения здесь

из

[email protected]:/usr/local/Cellar/apache-spark/1.5.1/libexec$ ls
R/        bin/      data/     examples/ python/
RELEASE   conf/     ec2/      lib/      sbin/
4b9b3361

Ответ 1

С пакетом PySpark (Spark 2.2.0 и более поздние версии)

После объединения SPARK-1267 вы сможете упростить процесс, установив pip установку Spark в среде, которую вы используете для разработки PyCharm.

  1. Перейдите в ФайлНастройкиИнтерпретатор проектов
  2. Нажмите на кнопку "Установить" и найдите PySpark

    .enter image description here

  3. Нажмите кнопку "Установить пакет".

Вручную с предоставленной пользователем установкой Spark

Создать конфигурацию запуска:

  1. Перейдите на ВыполнитьИзменить настройки
  2. .Добавить новую конфигурацию Python
  3. Установите путь Script, чтобы он указывал на скрипт, который вы хотите выполнить
  4. Измените поле переменных среды так, чтобы оно содержало как минимум:

    • SPARK_HOME - он должен указывать на каталог с установкой Spark. Он должен содержать каталоги, такие как binspark-submit, spark-shell и т.д.) И confspark-defaults.conf, spark-env.sh и т.д.)
    • PYTHONPATH - он должен содержать $SPARK_HOME/python и опционально $SPARK_HOME/python/lib/py4j-some-version.src.zip, если не доступно иначе. some-version должен соответствовать версии Py4J, используемой данной установкой Spark (0.8.2.1 - 1.5, 0.9 - 1.6, 0.10.3 - 2.0, 0.10.4 - 2.1, 0.10.4 - 2.2, 0.10.6 - 2.3, 0.10. 7 - 2.4)

      enter image description here

  5. Применить настройки

Добавить библиотеку PySpark в путь интерпретатора (требуется для завершения кода):

  1. Перейдите в ФайлНастройкиИнтерпретатор проектов
  2. Откройте настройки для переводчика, которого вы хотите использовать с Spark
  3. Отредактируйте пути интерпретатора, чтобы он содержал путь к $SPARK_HOME/python (Py4J, если требуется)
  4. Сохранить настройки

Необязательно

  1. Установите или добавьте в путь аннотации типа, соответствующие установленной версии Spark, для лучшего завершения и обнаружения статических ошибок (Отказ от ответственности - я являюсь автором проекта).

Наконец

Используйте только что созданную конфигурацию для запуска вашего скрипта.

Ответ 2

Вот как я решил это на mac osx.

  • brew install apache-spark
  • Добавьте это в ~/.bash_profile

    export SPARK_VERSION=`ls /usr/local/Cellar/apache-spark/ | sort | tail -1`
    export SPARK_HOME="/usr/local/Cellar/apache-spark/$SPARK_VERSION/libexec"
    export PYTHONPATH=$SPARK_HOME/python/:$PYTHONPATH
    export PYTHONPATH=$SPARK_HOME/python/lib/py4j-0.9-src.zip:$PYTHONPATH
    
  • Добавьте pyspark и py4j в корневой каталог контента (используйте правильную версию Spark):

    /usr/local/Cellar/apache-spark/1.6.1/libexec/python/lib/py4j-0.9-src.zip
    /usr/local/Cellar/apache-spark/1.6.1/libexec/python/lib/pyspark.zip
    

введите описание изображения здесь

Ответ 3

Вот настройка, которая работает для меня (Win7 64bit, PyCharm2017.3CE)

Настройте Intellisense:

  1. Нажмите Файл → Настройки → Проект: → Интерпретатор проекта

  2. Нажмите значок шестеренки справа от раскрывающегося списка Project Interpreter.

  3. Нажмите More... в контекстном меню

  4. Выберите переводчика, затем нажмите значок "Показать пути" (внизу справа)

  5. Нажмите на значок +, чтобы добавить следующие пути:

    \Питон\Lib\py4j-0.9-src.zip

    \Bin\питон\Lib\pyspark.zip

  6. Нажмите ОК, ОК, ОК

Идите и проверьте свои новые возможности intellisense.

Ответ 4

Настроить pyspark в pycharm (windows)

File menu - settings - project interpreter - (gearshape) - more - (treebelowfunnel) - (+) - [add python folder form spark installation and then py4j-*.zip] - click ok

Убедитесь, что SPARK_HOME установлен в среде Windows, из которого выйдет pycharm. Чтобы подтвердить:

Run menu - edit configurations - environment variables - [...] - show

Необязательно установите SPARK_CONF_DIR в переменных среды.

Ответ 5

Я использовал следующую страницу в качестве ссылки и смог получить pyspark/Spark 1.6.1 (установленный через homebrew), импортированный в PyCharm 5.

http://renien.com/blog/accessing-pyspark-pycharm/

import os
import sys

# Path for spark source folder
os.environ['SPARK_HOME']="/usr/local/Cellar/apache-spark/1.6.1"

# Append pyspark  to Python Path
sys.path.append("/usr/local/Cellar/apache-spark/1.6.1/libexec/python")

try:
    from pyspark import SparkContext
    from pyspark import SparkConf
    print ("Successfully imported Spark Modules")
except ImportError as e:
    print ("Can not import Spark Modules", e)
sys.exit(1)

С вышесказанным, pyspark загружается, но при попытке создать SparkContext я получаю ошибку шлюза. Там есть проблема с Spark из homebrew, поэтому я просто схватил Spark с сайта Spark (загрузите Pre-built для Hadoop 2.6 и более поздних версий) и укажите на каталоги искры и py4j. Вот код в pycharm, который работает!

import os
import sys

# Path for spark source folder
os.environ['SPARK_HOME']="/Users/myUser/Downloads/spark-1.6.1-bin-hadoop2.6"

# Need to Explicitly point to python3 if you are using Python 3.x
os.environ['PYSPARK_PYTHON']="/usr/local/Cellar/python3/3.5.1/bin/python3"

#You might need to enter your local IP
#os.environ['SPARK_LOCAL_IP']="192.168.2.138"

#Path for pyspark and py4j
sys.path.append("/Users/myUser/Downloads/spark-1.6.1-bin-hadoop2.6/python")
sys.path.append("/Users/myUser/Downloads/spark-1.6.1-bin-hadoop2.6/python/lib/py4j-0.9-src.zip")

try:
    from pyspark import SparkContext
    from pyspark import SparkConf
    print ("Successfully imported Spark Modules")
except ImportError as e:
    print ("Can not import Spark Modules", e)
    sys.exit(1)

sc = SparkContext('local')
words = sc.parallelize(["scala","java","hadoop","spark","akka"])
print(words.count())

У меня была большая помощь в этих инструкциях, которые помогли мне устранить неисправность в PyDev, а затем заставить его работать PyCharm - https://enahwe.wordpress.com/2015/11/25/how-to-configure-eclipse-for-developing-with-python-and-spark-on-hadoop/ p >

Я уверен, что кто-то провел несколько часов, ломая голову против своего монитора, пытаясь заставить это работать, поэтому, надеюсь, это поможет спасти их здравомыслие!

Ответ 6

Я использую conda для управления своими пакетами Python. Поэтому все, что я делал в терминале вне PyCharm, было:

conda install pyspark

или, если вы хотите более раннюю версию, скажем, 2.2.0, то выполните:

conda install pyspark=2.2.0

Это также автоматически загружает py4j. PyCharm больше не жаловался на import pyspark... и завершение кода также работало. Обратите внимание, что мой проект PyCharm уже был настроен на использование интерпретатора Python, который поставляется с Anaconda.

Ответ 7

Отметьте это видео.

Предположим, что ваш каталог искрового питона: /home/user/spark/python

Предположим, что ваш источник Py4j: /home/user/spark/python/lib/py4j-0.9-src.zip

В основном вы добавляете каталог искрового питона и каталог py4j внутри этого пути к интерпретатору. У меня недостаточно репутации, чтобы опубликовать снимок экрана, или я бы это сделал.

В видео пользователь создает виртуальную среду внутри самого pycharm, однако вы можете сделать виртуальную среду вне pycharm или активировать ранее существовавшую виртуальную среду, а затем запустить с ней pycharm и добавить эти пути в виртуальную среду пути интерпретатора изнутри pycharm.

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

Ответ 8

Перед запуском IDE или Python вам нужно настроить PYTHONPATH, SPARK_HOME.

Windows, изменение переменных окружения, добавление искрового питона и py4j в

PYTHONPATH=%PYTHONPATH%;{py4j};{spark python}

Unix,

export PYTHONPATH=${PYTHONPATH};{py4j};{spark/python}

Ответ 9

Из документации:

Чтобы запустить приложения Spark в Python, используйте bin/spark-submit scriptрасположенный в каталоге Spark. Этот script будет загружать Sparks Java/Scala и позволяют отправлять приложения на кластер. Вы также можете использовать bin/pyspark для запуска интерактивного Python оболочки.

Вы вызываете свой script напрямую с помощью интерпретатора CPython, который, как я думаю, вызывает проблемы.

Попробуйте запустить script с помощью

"${SPARK_HOME}"/bin/spark-submit test_1.py

Если это сработает, вы сможете заставить его работать в PyCharm, установив интерпретатор проекта в spark-submit.

Ответ 10

Я следил за учебниками в режиме онлайн и добавлял переменные env в .bashrc:

# add pyspark to python
export SPARK_HOME=/home/lolo/spark-1.6.1
export PYTHONPATH=$SPARK_HOME/python/:$PYTHONPATH
export PYTHONPATH=$SPARK_HOME/python/lib/py4j-0.9-src.zip:$PYTHONPATH

Затем я получил значение в SPARK_HOME и PYTHONPATH для pycharm:

(srz-reco)[email protected]:~$ echo $SPARK_HOME 
/home/lolo/spark-1.6.1
(srz-reco)[email protected]:~$ echo $PYTHONPATH
/home/lolo/spark-1.6.1/python/lib/py4j-0.9-src.zip:/home/lolo/spark-1.6.1/python/:/home/lolo/spark-1.6.1/python/lib/py4j-0.9-src.zip:/home/lolo/spark-1.6.1/python/:/python/lib/py4j-0.8.2.1-src.zip:/python/:

Затем я скопировал его в Run/Debug Configurations → Environment variables script.

Ответ 11

Самый простой способ - установить PySpark через интерпретатор проекта.

  1. Перейдите в Файл - Настройки - Проект - Переводчик проектов
  2. Нажмите на значок + в правом верхнем углу.
  3. Найдите PySpark и другие пакеты, которые вы хотите установить
  4. Наконец, нажмите установить пакет
  5. Это сделано!!

Ответ 12

Самый простой способ -

Перейдите в папку site-packages вашей установки anaconda/python, скопируйте туда папки pyspark и pyspark.egg-info.

Перезапустите pycharm для обновления индекса. Вышеупомянутые две папки присутствуют в папке искры/питона вашей искровой установки. Таким образом вы также получите предложения по завершению кода из pycharm.

Пакеты сайтов можно легко найти в вашей установке python. В anaconda его под anaconda/lib/pythonx.x/site-packages

Ответ 13

Я попытался добавить модуль pyspark через меню Project Interpreter, но этого оказалось недостаточно... существует ряд системных переменных среды, которые необходимо установить, например, SPARK_HOME, и путь к /hadoop/bin/winutils.exe, чтобы читать локальные файлы данных. Вам также необходимо использовать правильные версии Python, JRE, JDK, все доступные в системных переменных среды и PATH. инструкции в этих видео сработали