web-dev-qa-db-fra.com

Comment associer PyCharm à PySpark?

Je suis nouveau avec Apache spark et apparemment, j'ai installé Apache-spark avec homebrew dans mon macbook:

Last login: Fri Jan  8 12:52:04 on console
user@MacBook-Pro-de-User-2:~$ 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's 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.
>>>

J'aimerais commencer à jouer pour en savoir plus sur MLlib. Cependant, j'utilise Pycharm pour écrire des scripts en python. Le problème est le suivant: lorsque je vais à Pycharm et que j'essaie d'appeler pyspark, Pycharm ne peut pas trouver le module. J'ai essayé d'ajouter le chemin à Pycharm comme suit:

cant link pycharm with spark

Puis d'un blog j'ai essayé ceci:

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)

Et ne peut toujours pas commencer à utiliser PySpark avec Pycharm, aucune idée de la façon de "lier" PyCharm avec Apache-pyspark ?.

Mise à jour:

Ensuite, je recherche Apache-spark et le chemin python afin de définir les variables d'environnement de Pycharm:

Apache-spark path:

user@MacBook-Pro-User-2:~$ 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

chemin python:

user@MacBook-Pro-User-2:~$ 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) *

Ensuite, avec les informations ci-dessus, j'ai essayé de définir les variables d'environnement comme suit:

configuration 1

Avez-vous une idée de la manière de lier correctement Pycharm à pyspark?

Ensuite, lorsque je lance un script python avec la configuration ci-dessus, j'ai cette exception:

/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: Ensuite, j'ai essayé cette configuration proposée par @ zero323

Configuration 1:

/usr/local/Cellar/Apache-spark/1.5.1/ 

conf 1

en dehors:

 user@MacBook-Pro-de-User-2:/usr/local/Cellar/Apache-spark/1.5.1$ ls
CHANGES.txt           NOTICE                libexec/
INSTALL_RECEIPT.json  README.md
LICENSE               bin/

Configuration 2:

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

enter image description here

en dehors:

user@MacBook-Pro-de-User-2:/usr/local/Cellar/Apache-spark/1.5.1/libexec$ ls
R/        bin/      data/     examples/ python/
RELEASE   conf/     ec2/      lib/      sbin/
68
tumbleweed

Avec le package PySpark (Spark 2.2.0 et versions ultérieures)

Avec la fusion de SPARK-1267 , vous devriez pouvoir simplifier le processus en installant pip en installant Spark dans l'environnement que vous utilisez pour le développement de PyCharm.

  1. Allez dans Fichier -> Paramètres -> Interprète de projet
  2. Cliquez sur le bouton d'installation et recherchez PySpark

    enter image description here

  3. Cliquez sur le bouton installer le paquet.

Manuellement avec l'installation Spark fournie par l'utilisateur

Créer une configuration d'exécution :

  1. Aller à Exécuter -> Modifier les configurations
  2. Ajouter une nouvelle configuration Python
  3. Définissez le chemin du script afin qu'il pointe vers le script que vous souhaitez exécuter.
  4. Editez le champ Variables d’environnement afin qu’il contienne au moins:

    • SPARK_HOME - il devrait pointer vers le répertoire avec Spark installation. Il doit contenir des répertoires tels que bin (avec spark-submit, spark-Shell, etc.) et conf (avec spark-defaults.conf, spark-env.sh, etc. )
    • PYTHONPATH - il devrait contenir $SPARK_HOME/python et éventuellement $SPARK_HOME/python/lib/py4j-some-version.src.Zip s'il n'est pas disponible autrement. some-version doit correspondre à la version de Py4J utilisée par une installation donnée de 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)

      enter image description here

  5. Appliquer les paramètres

Ajoutez la bibliothèque PySpark au chemin de l’interpréteur (obligatoire pour l’achèvement du code) :

  1. Allez dans Fichier -> Paramètres -> Interprète de projet
  2. Paramètres ouverts pour un interprète que vous souhaitez utiliser avec Spark
  3. Editez les chemins d'interpréteur pour qu'il contienne le chemin de $SPARK_HOME/python (Py4J si nécessaire)
  4. Enregistrer les paramètres

En option

  1. Installez ou ajoutez au chemin annotations de type correspondant à la version installée Spark pour une meilleure complétion et une meilleure détection des erreurs statiques (Avertissement - Je suis un auteur du projet).

Finalement

Utilisez la configuration nouvellement créée pour exécuter votre script.

98
zero323

Voici comment j'ai résolu ceci sur mac osx.

  1. brew install Apache-spark
  2. Ajoutez ceci à ~/.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
    
  3. Ajoutez pyspark et py4j à la racine du contenu (utilisez la version correcte de 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
    

enter image description here

34
sthomps

Voici la configuration qui fonctionne pour moi (Win7 64 bits, PyCharm2017.3CE)

Configurez Intellisense:

  1. Cliquez sur Fichier -> Paramètres -> Projet: -> Interprète de projet

  2. Cliquez sur l'icône représentant un engrenage à droite du menu déroulant Interprète de projet.

  3. Cliquez sur Plus ... dans le menu contextuel

  4. Choisissez l'interprète, puis cliquez sur l'icône "Afficher les chemins" (en bas à droite)

  5. Cliquez sur l'icône + deux ajoutez les chemins suivants:

    \ python\lib\py4j-0.9-src.Zip

    \ bin\python\lib\pyspark.Zip

  6. Cliquez sur OK, OK, OK

Allez-y et testez vos nouvelles capacités intellisense.

12
Michael

Configurez pyspark dans pycharm (windows)

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

Assurez-vous que SPARK_HOME est défini dans l’environnement Windows, pycharm partira de là. Confirmer :

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

Définissez éventuellement SPARK_CONF_DIR dans les variables d'environnement.

5
Gaurav Khare

J'ai utilisé la page suivante comme référence et j'ai pu importer pyspark/Spark 1.6.1 (installé via homebrew) dans 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)

Avec ce qui précède, pyspark se charge, mais je reçois une erreur de passerelle lorsque je tente de créer un SparkContext. Il y a un problème avec Spark de homebrew. Je viens donc de saisir Spark du site Web Spark (téléchargez le pré-construit pour Hadoop 2.6 et versions ultérieures) et pointez sur les répertoires spark et py4j situés sous celui-ci. Voici le code dans pycharm qui fonctionne!

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())

Ces instructions m'ont beaucoup aidé, ce qui m'a aidé à résoudre PyDev et à le faire fonctionner. PyCharm - https://enahwe.wordpress.com/2015/25/how-to-configure-Eclipse -pour-développer-avec-python-et-spark-on-hadoop /

Je suis sûr que quelqu'un a passé quelques heures à se cogner la tête contre son moniteur pour que cela fonctionne, alors j'espère que cela contribuera à préserver leur santé mentale!

4
obug

J'utilise conda pour gérer mes packages Python. Donc tout ce que j'ai fait dans un terminal en dehors de PyCharm était:

conda install pyspark

ou, si vous voulez une version antérieure, disons 2.2.0, alors faites:

conda install pyspark=2.2.0

Cela entraîne automatiquement py4j. PyCharm ne se plaint plus alors de import pyspark... et la complétion du code fonctionne également. Notez que mon projet PyCharm était déjà configuré pour utiliser l'interpréteur Python fourni avec Anaconda.

2
snark

Départ cette vidéo.

Supposons que votre répertoire spark python est: /home/user/spark/python

Supposons que votre source Py4j est: /home/user/spark/python/lib/py4j-0.9-src.Zip

En gros, vous ajoutez le répertoire spark python et le répertoire py4j aux chemins de l'interpréteur. Je n'ai pas assez de réputation pour poster une capture d'écran ou je le ferais.

Dans la vidéo, l'utilisateur crée un environnement virtuel au sein de pycharm lui-même. Toutefois, vous pouvez créer un environnement virtuel en dehors de pycharm ou activer un environnement virtuel préexistant, puis démarrer pycharm avec ce dernier et ajouter ces chemins d'accès aux chemins d'interprétation de l'environnement virtuel. dans pycharm.

J'ai utilisé d'autres méthodes pour ajouter spark via les variables d'environnement bash, ce qui fonctionne très bien en dehors de pycharm, mais pour une raison quelconque, elles n'étaient pas reconnues dans pycharm, mais cette méthode fonctionnait parfaitement.

1

Vous devez configurer PYTHONPATH, SPARK_HOME avant de lancer IDE ou Python.

Windows, modifier les variables d'environnement, ajouté spark python et py4j dans

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

Unix,

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

Le moyen le plus simple consiste à installer PySpark via un interpréteur de projet.

  1. Aller dans Fichier - Paramètres - Projet - Interprète de projet
  2. Cliquez sur l'icône + en haut à droite.
  3. Recherchez PySpark et les autres packages que vous souhaitez installer
  4. Enfin, cliquez sur installer le paquet
  5. C'est fait!!
0
yogesh

J'ai suivi les tutoriels en ligne et ajouté les variables 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

Je viens alors de recevoir la valeur dans SPARK_HOME et PYTHONPATH pour pycharm:

(srz-reco)lolo@K:~$ echo $SPARK_HOME 
/home/lolo/spark-1.6.1
(srz-reco)lolo@K:~$ 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/:

Ensuite, je l'ai copié dans Configurations Exécuter/Déboguer -> Variables d'environnement du script.

0
thecheech

De la documentation :

Pour exécuter les applications Spark en Python, utilisez le script bin/spark-submit situé dans le répertoire Spark. Ce script chargera les bibliothèques Java/Scala de Spark et vous permettra de soumettre des applications à un cluster. Vous pouvez également utiliser bin/pyspark pour lancer un shell Python interactif.

Vous appelez votre script directement avec l'interpréteur CPython, ce qui, à mon avis, pose des problèmes.

Essayez de lancer votre script avec:

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

Si cela fonctionne, vous devriez pouvoir le faire fonctionner dans PyCharm en paramétrant l'interprète du projet pour qu'il envoie-spark.

0
grc