¿Cómo enlazar PyCharm con PySpark?

Soy nuevo con apache spark y aparentemente instalé apache-spark con homebrew en mi 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. >>> 

Me gustaría empezar a jugar para aprender más sobre MLlib. Sin embargo, uso Pycharm para escribir scripts en python. El problema es: cuando voy a Pycharm y trato de llamar a pyspark, Pycharm no puede encontrar el módulo. Intenté agregar el camino a Pycharm de la siguiente manera:

No puedo vincular pycharm con chispa

Entonces desde un blog probé esto:

 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) 

Y aún no puedes empezar a usar PySpark con Pycharm, ¿alguna idea de cómo “vincular” PyCharm con apache-pyspark?

Actualizar:

Luego busco la ruta apache-spark y python para establecer las variables de entorno de Pycharm:

camino de apache-chispa

 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 

camino de 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) * 

Luego, con la información anterior, intenté establecer las variables de entorno de la siguiente manera:

configuración 1

¿Alguna idea de cómo vincular correctamente Pycharm con pyspark?

Luego, cuando ejecuto un script de Python con la configuración anterior, tengo esta excepción:

 /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  from pyspark import SparkContext ImportError: No module named pyspark 

ACTUALIZACIÓN: Entonces probé estas configuraciones propuestas por @ zero323

Configuración 1:

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

conf 1

afuera:

  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/ 

Configuración 2:

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

introduzca la descripción de la imagen aquí

afuera:

 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/ 

Con el paquete PySpark (Spark 2.2.0 y posterior)

Al fusionar SPARK-1267 , debería poder simplificar el proceso mediante la instalación de Spark en el entorno que usa para el desarrollo de PyCharm.

  1. Ir a Archivo -> Configuración -> Intérprete del proyecto
  2. Haga clic en el botón de instalación y busque PySpark

    introduzca la descripción de la imagen aquí

  3. Haga clic en el botón instalar paquete.

Manualmente con la instalación de Spark proporcionada por el usuario.

Crear configuración de ejecución :

  1. Ir a Ejecutar -> Editar configuraciones
  2. Agregar nueva configuración de Python
  3. Establezca la ruta del script para que apunte al script que desea ejecutar
  4. Edita el campo de las variables del entorno para que contenga al menos

    • SPARK_HOME : debe apuntar al directorio con la instalación de Spark. Debe contener directorios como bin (con spark-submit , spark-shell , etc.) y conf (con spark-defaults.conf , spark-env.sh , etc.)
    • PYTHONPATH : debe contener $SPARK_HOME/python y opcionalmente $SPARK_HOME/python/lib/py4j-some-version.src.zip si no está disponible de otra manera. some-version debe coincidir con la versión Py4J utilizada por una instalación Spark dada (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)

      introduzca la descripción de la imagen aquí

  5. Aplicar la configuración.

Agregue la biblioteca PySpark a la ruta del intérprete (requerido para completar el código) :

  1. Ir a Archivo -> Configuración -> Intérprete del proyecto
  2. Abra la configuración de un intérprete que desee usar con Spark
  3. Edite las rutas de los intérpretes para que contengan la ruta a $SPARK_HOME/python (un Py4J si es necesario)
  4. Guardar los ajustes

Opcionalmente

  1. Instale o agregue al tipo de ruta anotaciones que coincidan con la versión instalada de Spark para obtener una mejor terminación y detección de errores estáticos (Descargo de responsabilidad: soy un autor del proyecto).

Finalmente

Utilice la configuración recién creada para ejecutar su script.

Así es como resolví esto en Mac OSX.

  1. brew install apache-spark
  2. Agrega esto a ~ / .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. Agregue pyspark y py4j a la raíz del contenido (use la versión correcta 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 

introduzca la descripción de la imagen aquí

Aquí está la configuración que funciona para mí (Win7 64bit, PyCharm2017.3CE)

Configurar Intellisense:

  1. Haga clic en Archivo -> Configuración -> Proyecto: -> Intérprete del proyecto

  2. Haga clic en el icono de engranaje a la derecha del menú desplegable del intérprete del proyecto

  3. Haga clic en Más … en el menú contextual

  4. Elija el intérprete, luego haga clic en el icono “Mostrar rutas” (abajo a la derecha)

  5. Haga clic en el ícono + dos para agregar las siguientes rutas:

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

    \ bin \ python \ lib \ pyspark.zip

  6. Haga clic en OK, OK, OK

Avanza y prueba tus nuevas capacidades intellisense.

Configurar pyspark en pycharm (windows)

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

Asegúrate de establecer SPARK_HOME en el entorno de Windows, pycharm tomará desde allí. Para confirmar :

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

Opcionalmente, establezca SPARK_CONF_DIR en variables de entorno.

Utilicé la siguiente página como referencia y pude obtener pyspark / Spark 1.6.1 (instalado a través de homebrew) importado en 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 lo anterior, pyspark se carga, pero recibo un error de pasarela cuando bash crear un SparkContext. Hay algunos problemas con Spark de Homebrew, así que simplemente tomé Spark del sitio web de Spark (descargue el Pre-built para Hadoop 2.6 y versiones posteriores) y señalo los directorios de spark y py4j que se encuentran debajo. ¡Aquí está el código en pycharm que funciona!

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

Recibí mucha ayuda con estas instrucciones, que me ayudaron a solucionar problemas en PyDev y luego a que funcionara PyCharm – https://enahwe.wordpress.com/2015/11/25/how-to-configure-eclipse-for-developing -con-python-y-spark-on-hadoop /

Estoy seguro de que alguien ha pasado algunas horas golpeando su cabeza contra su monitor tratando de hacer que esto funcione, así que espero que esto ayude a salvar su cordura.

Uso conda para administrar mis paquetes de Python. Así que todo lo que hice en una terminal fuera de PyCharm fue:

 conda install pyspark 

o, si desea una versión anterior, diga 2.2.0, entonces haga:

 conda install pyspark=2.2.0 

Esto automáticamente tira en py4j también. PyCharm ya no se quejó de import pyspark... y la finalización del código también funcionó. Tenga en cuenta que mi proyecto PyCharm ya estaba configurado para usar el intérprete de Python que viene con Anaconda.

Echa un vistazo a este video.

Supongamos que su directorio de spark python es: /home/user/spark/python

Supongamos que su fuente Py4j es: /home/user/spark/python/lib/py4j-0.9-src.zip

Básicamente, agrega el directorio de python de chispa y el directorio de py4j dentro de eso a las rutas del intérprete. No tengo la reputación suficiente para publicar una captura de pantalla o lo haría.

En el video, el usuario crea un entorno virtual dentro de pycharm, sin embargo, puede crear el entorno virtual fuera de pycharm o activar un entorno virtual preexistente, luego iniciar pycharm con él y agregar esas rutas a las rutas del intérprete del entorno virtual desde dentro de pycharm.

Utilicé otros métodos para agregar chispa a través de las variables de entorno bash, que funcionan muy bien fuera de pycharm, pero por alguna razón no fueron reconocidas dentro de pycharm, pero este método funcionó perfectamente.

Debe configurar PYTHONPATH, SPARK_HOME antes de iniciar IDE o Python.

Windows, edita las variables de entorno, agrega spark python y py4j en

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

Unix,

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

De la documentación :

Para ejecutar aplicaciones Spark en Python, use el script bin / spark-submit ubicado en el directorio Spark. Este script cargará las bibliotecas de Java / Scala de Spark y le permitirá enviar aplicaciones a un clúster. También puede usar bin / pyspark para iniciar un shell de Python interactivo.

Está invocando su script directamente con el intérprete de CPython, que creo que está causando problemas.

Intente ejecutar su script con:

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

Si eso funciona, debería poder hacer que funcione en PyCharm configurando el intérprete del proyecto para que envíe.

Seguí los tutoriales en línea y agregué las variables 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 

Entonces acabo de recibir el valor en SPARK_HOME y PYTHONPATH para 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/: 

Luego lo copié en Ejecutar / Depurar configuraciones -> Variables de entorno del script.

La forma más fácil es

Vaya a la carpeta de paquetes de sitio de su instalación de anaconda / python, Copie y pegue las carpetas pyspark y pyspark.egg-info allí.

Reinicie pycharm para actualizar el índice. Las dos carpetas mencionadas anteriormente están presentes en la carpeta spark / python de su instalación de spark. De esta manera obtendrás sugerencias para completar el código también de pycharm.

Los paquetes de sitio se pueden encontrar fácilmente en su instalación de Python. En anaconda está debajo de anaconda / lib / pythonx.x / site-packages