11 Domanda: Come collegare PyCharm con PySpark?

domanda creata a Fri, Apr 5, 2019 12:00 AM

Sono nuovo con la scintilla di apache e apparentemente ho installato apache-spark con homebrew nel mio 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://sparkDriver@192.168.1.64: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.
>>>

Vorrei iniziare a giocare per saperne di più su MLlib. Comunque, io uso Pycharm per scrivere script in python. Il problema è: quando vado a Pycharm e provo a chiamare pyspark, Pycharm non riesce a trovare il modulo. Ho provato ad aggiungere il percorso a Pycharm come segue:

 non puoi collegare pycharm con spark

Quindi da un blog ho provato questo:

 
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)

E ancora non è possibile iniziare a utilizzare PySpark con Pycharm, qualche idea su come "collegare" PyCharm con apache-pyspark?.

Aggiornamento:

Quindi cerco il percorso apache-spark e python per impostare le variabili d'ambiente di Pycharm:

percorso apache-spark:

 
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

percorso 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) *

Quindi con le informazioni di cui sopra ho provato a impostare le variabili di ambiente come segue:

 configurazione 1

Qualche idea su come collegare correttamente Pycharm con pyspark?

Quindi quando eseguo uno script python con la configurazione di cui sopra ho questa eccezione:

 
/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: Poi ho provato questa configurazione proposta da @ zero323

Configurazione 1:

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

 conf 1

out:

 
 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/

Configurazione 2:

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

 inserisci la descrizione dell'immagine qui

out:

 
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/
    
67
11 risposte                              11                         

Con pacchetto PySpark (Spark 2.2.0 e versioni successive)

Con la fusione di SPARK-1267 dovresti essere in grado di semplificare il processo di pip l'installazione di Spark nell'ambiente che utilizzi per lo sviluppo di PyCharm.

  1. Vai a File - > Impostazioni - > Interprete di progetto
  2. Fai clic sul pulsante Installa e cerca PySpark

     inserisci la descrizione dell'immagine qui

  3. Fai clic sul pulsante di installazione del pacchetto.

Manualmente con l'installazione Spark fornita dall'utente

Crea configurazione di esecuzione :

  1. Vai a Esegui - > Modifica configurazioni
  2. Aggiungi una nuova configurazione Python
  3. Imposta il percorso Script in modo che punti allo script che desideri eseguire
  4. Modifica il campo Variabili d'ambiente in modo che contenga almeno:

    •  SPARK_HOME - dovrebbe puntare alla directory con l'installazione di Spark. Dovrebbe contenere directory come bin (con spark-submit, spark-shell, ecc.) E conf (con spark-defaults.conf, spark-env.sh, ecc.)
    • PYTHONPATH - dovrebbe contenere $SPARK_HOME/python e facoltativamente $SPARK_HOME/python/lib/py4j-some-version.src.zip se non disponibile altrimenti. some-version deve corrispondere alla versione Py4J utilizzata da una determinata installazione 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)

       inserisci la descrizione dell'immagine qui

  5. Applica le impostazioni

Aggiungi la libreria PySpark al percorso dell'interprete (richiesta per il completamento del codice) :

  1. Vai a File - > Impostazioni - > Interprete di progetto
  2. Apri le impostazioni per un interprete che desideri utilizzare con Spark
  3. Modifica i percorsi dell'interprete in modo che contenga il percorso per $SPARK_HOME/python (un Py4J se necessario)
  4. Salva le impostazioni

Opzionalmente

  1. Installa o aggiungi al percorso annotazioni sul tipo corrispondente alla versione Spark installata per ottenere una migliore corilevazione dell'errore di staticità e dell'impostazione (Disclaimer - Sono un autore del progetto).

Infine

Utilizza la configurazione appena creata per eseguire lo script.

    
95
2019-02-01 08: 25: 01Z
  1. A proposito, questo è come si modificano i percorsi dell'interprete, almeno in PyCharm 2016: jetbrains.com/help/pycharm/2016.1/... Seleziona il pulsante" Mostra percorsi per l'interprete selezionato "
    21-11-2016 18: 12: 54Z
  2. Sulla versione Mac di PyCharm (v-2017.2), il Project Interpreter si trova in Preferenze ... invece di File /Impostazioni
    2017-12-06 19: 38: 58Z
  3. Con l'opzione 1, come si aggiungono i JAR /pacchetti di Spark? ad esempio, ho bisogno di com.databricks: spark-redshift_2.10: 3.0.0-preview1
    2018-02-15 05: 52: 27Z
  4. @ lfk Tramite i file di configurazione (spark-defaults.conf) o attraverso submit args - come con Notebook Jupyter . Gli argomenti di invio possono essere definiti nelle variabili di ambiente PyCharm, anziché nel codice, se preferisci questa opzione.
    2019-02-01 01: 46: 47Z

Ecco come ho risolto questo problema su mac osx.

  1. brew install apache-spark
  2. Aggiungi questo in ~ /.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. Aggiungi pyspark e py4j alla root del contenuto (usa la versione Spark corretta):

     
    /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
    

invio descrizione dell'immagine qui

    
33
2016-07-19 03: 43: 11Z
  1. quale versione di pycharm è questa? Sono dell'edizione community 2016.1 e non vedo questa finestra.
    2016-05-06 16: 38: 47Z
  2. 2016.1 Im su osx ma dovrebbe essere simile. Vai sotto 'Preferenze'. Clicca sul tuo progetto a sinistra.
    2016-05-08 16: 01: 32Z
  3. Grazie. Questo mi ha aiutato su IntelliJ IDEA, che non ha l'impostazione di Project Interpreter.
    2016-07-19 03: 40: 06Z
  4. Puoi spiegare cosa aggiunge alla radice del contenuto? Non ho avuto bisogno di farlo ... Ho appena messo il $SPARK_HOME/python nel classpath dell'interprete e aggiunto le variabili di ambiente e funziona come previsto.
    2016-07-19 04: 05: 03Z
  5. @ cricket_007 Il terzo punto: Add pyspark and py4j to content root (use the correct Spark version) mi ha aiutato nel completamento del codice. Come hai fatto a farlo cambiando Project Interpreter?
    2016-08-09 18: 08: 57Z

Ecco la configurazione che funziona per me (Win7 64bit, PyCharm2017.3CE)

Configura Intellisense:

  
  1. Fai clic su File - > Impostazioni - > Progetto: - > Interprete di progetto

  2.   
  3. Fai clic sull'icona a forma di ingranaggio a destra del menu a discesa Interprete di progetto

  4.   
  5. Fai clic su Altro ... dal menu di scelta rapida

  6.   
  7. Scegli l'interprete, quindi fai clic sull'icona "Mostra percorsi" (in basso a destra)

  8.   
  9. Fai clic sull'icona + due aggiungi i seguenti percorsi:

         

    \Python \lib \py4j-0.9-src.zip

         

    \bin \python \lib \pyspark.zip

  10.   
  11. Fai clic su OK, OK, OK

  12.   

Continua e metti alla prova le tue nuove capacità intellisense.

    
12
2019-04-05 09: 33: 56Z

Configura pyspark in pycharm (windows)

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

Assicurati che SPARK_HOME sia impostato in ambiente Windows, da qui prenderà pycharm. Per confermare:

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

Imposta facoltativamente SPARK_CONF_DIR in variabili di ambiente.

    
5
2016-11-28 07: 52: 15Z

Ho usato la seguente pagina come riferimento e sono riuscito a ottenere pyspark /Spark 1.6.1 (installato tramite homebrew) importato in 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)

Con quanto sopra, pyspark viene caricato, ma ricevo un errore di gateway quando provo a creare uno SparkContext. C'è qualche problema con Spark da homebrew, quindi ho appena preso Spark dal sito web di Spark (scarica Pre-built per Hadoop 2.6 e versioni successive) e punta alle directory spark e py4j sotto. Ecco il codice in pycharm che funziona!

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

Ho ricevuto molto aiuto da queste istruzioni, che mi hanno aiutato a risolvere i problemi in PyDev e poi farlo funzionare PyCharm - https://enahwe.wordpress.com/2015/11/25/how-to-configure- eclipse-per-sviluppo-con-python-e-spark-on-Hadoop /

Sono sicuro che qualcuno ha passato alcune ore a sbattere la testa contro il monitor per cercare di farlo funzionare, quindi spero che questo aiuti a salvare la sanità mentale!

    
4
2016-03-16 16: 17: 19Z
  1. Il secondo ha funzionato come un incantesimo, grazie.
    2017-04-05 12: 10: 45Z

Uso conda per gestire i miei pacchetti Python. Quindi tutto ciò che ho fatto in un terminale fuori da PyCharm era:

 
conda install pyspark

oppure, se vuoi una versione precedente, diciamo 2.2.0, quindi esegui:

 
conda install pyspark=2.2.0

Questo fa entrare automaticamente anche in py4j. PyCharm non si è più lamentato del import pyspark... e anche il completamento del codice ha funzionato. Nota: il mio progetto PyCharm era già configurato per utilizzare l'interprete Python fornito con Anaconda.

    
2
2018-09-05 14: 37: 33Z

Dai un'occhiata a questo video.

Supponi che la tua directory spark python sia: /home/user/spark/python

Supponi che il tuo sorgente Py4j sia: /home/user/spark/python/lib/py4j-0.9-src.zip

Fondamentalmente si aggiunge la directory spark python e la directory py4j all'interno di quella ai percorsi dell'interprete. Non ho abbastanza reputazione per pubblicare uno screenshot o lo farei.

Nel video, l'utente crea un ambiente virtuale all'interno di pycharm stesso, tuttavia, è possibile rendere l'ambiente virtuale esterno a pycharm o attivare un ambiente virtuale preesistente, quindi avviare pycharm con esso e aggiungere quei percorsi all'ambiente virtuale percorsi interpreti dall'interno di pycharm.

Ho usato altri metodi per aggiungere spark tramite le variabili di ambiente bash, che funziona benissimo fuori da pycharm, ma per qualche motivo non sono stati riconosciuti all'interno di pycharm, ma questo metodo ha funzionato perfettamente.

    
1
2016-04-07 17: 15: 04Z
  1. @ ml_student Ti accennerò anche che se segui il metodo video (che sarebbesii il mio consiglio per la sua velocità e facilità) avrai bisogno di istanziare un oggetto SparkContext anche all'inizio del tuo script. Osservo questo perché usare la console interattiva di pyspark tramite la linea di comando crea automaticamente il contesto per te, mentre in PyCharm devi prenderti cura di te stesso; la sintassi sarebbe: sc = SparkContext()
    2016-04-08 01: 30: 45Z

Devi configurare PYTHONPATH, SPARK_HOME prima di avviare IDE o Python.

Windows, modifica le variabili di ambiente, aggiunto spark python e py4j in

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

Unix,

 
export PYTHONPATH=${PYTHONPATH};{py4j};{spark/python}
    
1
2017-02-26 17: 48: 51Z

Dalla documentazione :

  

Per eseguire le applicazioni Spark in Python, usa lo script bin /spark-submit   situato nella directory Spark. Questo script caricherà Spark's   Librerie Java /Scala e consentono di inviare applicazioni a   grappolo. Puoi anche usare bin /pyspark per avviare un Python interattivo   shell.

Stai invocando il tuo script direttamente con l'interprete CPython, che penso stia causando problemi.

Prova a eseguire lo script con:

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

Se funziona, dovresti essere in grado di farlo funzionare in PyCharm impostando l'interprete del progetto su spark-submit.

    
0
2016-01-11 03: 30: 10Z
  1. dovresti essere in grado di farlo funzionare in PyCharm impostando l'interprete del progetto su spark-submit - Provato. "Il file selezionato non è una casa valida per Python SDK". Lo stesso per bin/pyspark
    2016-07-19 03: 49: 26Z

Ho seguito le esercitazioni online e aggiunto le variabili env a .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

Ho quindi ottenuto il valore in SPARK_HOME e PYTHONPATH in 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/:

Poi l'ho copiato in Run /Debug Configurations - > Variabili d'ambiente dello script.

    
0
2016-04-12 13: 41: 17Z

Il modo più semplice è

  

Vai alla cartella dei pacchetti del sito della tua installazione di anaconda /python, copia incolla le cartelle pyspark e pyspark.egg-info lì.

Riavvia pycharm per aggiornare l'indice. Le due suddette cartelle sono presenti nella cartella spark /python della tua installazione di scintilla. In questo modo otterrai anche suggerimenti sul completamento del codice da pycharm.

  

I pacchetti del sito possono essere facilmente trovati nella tua installazione python. In anaconda è in anaconda /lib /pythonx.x /site-packages

    
- 1
2017-06-16 10: 32: 30Z
  1. In questo modo pycharm penserà che sia un'altra lib.
    2017-06-16 10: 33: 08Z
fonte posta Qui