Как связать 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/
Ответы
Ответ 1
С пакетом PySpark (Spark 2.2.0 и более поздние версии)
После объединения SPARK-1267 вы сможете упростить процесс, установив pip
установку Spark в среде, которую вы используете для разработки PyCharm.
- Перейдите в Файл → Настройки → Интерпретатор проектов
Нажмите на кнопку "Установить" и найдите PySpark
.![enter image description here]()
Нажмите кнопку "Установить пакет".
Вручную с предоставленной пользователем установкой Spark
Создать конфигурацию запуска:
- Перейдите на Выполнить → Изменить настройки
- .Добавить новую конфигурацию Python
- Установите путь Script, чтобы он указывал на скрипт, который вы хотите выполнить
Измените поле переменных среды так, чтобы оно содержало как минимум:
SPARK_HOME
- он должен указывать на каталог с установкой Spark. Он должен содержать каталоги, такие как bin
(с spark-submit
, spark-shell
и т.д.) И conf
(с spark-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]()
Применить настройки
Добавить библиотеку PySpark в путь интерпретатора (требуется для завершения кода):
- Перейдите в Файл → Настройки → Интерпретатор проектов
- Откройте настройки для переводчика, которого вы хотите использовать с Spark
- Отредактируйте пути интерпретатора, чтобы он содержал путь к
$SPARK_HOME/python
(Py4J, если требуется)
- Сохранить настройки
Необязательно
- Установите или добавьте в путь аннотации типа, соответствующие установленной версии 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:
-
Нажмите Файл → Настройки → Проект: → Интерпретатор проекта
-
Нажмите значок шестеренки справа от раскрывающегося списка Project Interpreter.
-
Нажмите More... в контекстном меню
-
Выберите переводчика, затем нажмите значок "Показать пути" (внизу справа)
-
Нажмите на значок +, чтобы добавить следующие пути:
\Питон\Lib\py4j-0.9-src.zip
\Bin\питон\Lib\pyspark.zip
-
Нажмите ОК, ОК, ОК
Идите и проверьте свои новые возможности 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 через интерпретатор проекта.
- Перейдите в Файл - Настройки - Проект - Переводчик проектов
- Нажмите на значок + в правом верхнем углу.
- Найдите PySpark и другие пакеты, которые вы хотите установить
- Наконец, нажмите установить пакет
- Это сделано!!
Ответ 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
. инструкции в этих видео сработали