python apache-spark pyspark pycharm homebrew

python - ¿Cómo vincular PyCharm con PySpark?



apache-spark homebrew (12)

La forma más sencilla es instalar PySpark a través del intérprete de proyectos.

  1. Ir a Archivo - Configuración - Proyecto - Intérprete de Proyecto
  2. Haga clic en el ícono + en la esquina superior derecha.
  3. Busque PySpark y otros paquetes que desea instalar
  4. Finalmente haga clic en instalar paquete
  5. ¡¡Está hecho!!

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://[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. >>>

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

Luego, 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 todavía no puede comenzar a usar PySpark con Pycharm, ¿alguna idea de cómo "vincular" PyCharm con apache-pyspark ?.

Actualizar:

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

camino 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

ruta 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:

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

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

Configuración 1:

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

fuera:

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

fuera:

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)

Con SPARK-1267 fusionándose, debería poder simplificar el proceso instalando pip Spark en el entorno que utiliza para el desarrollo de PyCharm.

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

  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. Vaya 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. Editar campo de variables de 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)

  5. Aplicar la configuración

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

  1. Vaya a Archivo -> Configuración -> Intérprete de proyecto
  2. Abra la configuración para un intérprete que quiera usar con Spark
  3. Edite rutas de intérprete para que contenga la ruta a $SPARK_HOME/python (un Py4J si es necesario)
  4. Guarda la configuración

Opcionalmente

  1. Instale o agregue anotaciones de tipo de ruta 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

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


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 de proyecto

  2. Haga clic en el ícono de ajustes a la derecha del menú desplegable del intérprete de proyectos

  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 + para agregar las siguientes rutas:

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

    / bin / python / lib / pyspark.zip

  6. Haga clic en Aceptar, Aceptar, Aceptar

Siga adelante y pruebe sus nuevas capacidades de inteligencia.


Así es como resolví esto en mac osx.

  1. brew install apache-spark
  2. Agregue 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 de 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


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úrese de que SPARK_HOME esté configurado en el entorno de Windows, pycharm tomará desde allí. Para confirmar :

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

Opcionalmente, configure SPARK_CONF_DIR en variables de entorno.


De la documentation :

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

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

Intenta ejecutar tu script con:

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

Si eso funciona, debería ser capaz de hacerlo funcionar en PyCharm configurando el intérprete del proyecto para enviar por chispa.


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

Windows, edite variables de entorno, agregue spark python y py4j en

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

Unix

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


La forma más fácil es

Vaya a la carpeta de paquetes del 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, también obtendrá sugerencias de finalización de código de pycharm.

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


Mira este video.

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

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

Básicamente, agrega el directorio spark python y el directorio py4j dentro de eso a las rutas del intérprete. No tengo suficiente reputación 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 de 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 funciona muy bien fuera de pycharm, pero por alguna razón no fueron reconocidos dentro de pycharm, pero este método funcionó perfectamente.


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 obtener 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.


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 puerta de enlace cuando intento crear un SparkContext. Hay algún problema con Spark de homebrew, por lo que acabo de obtener Spark del sitio web de Spark (descargue el precompilado para Hadoop 2.6 y posterior) y señale los directorios spark y py4j debajo de eso. ¡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 de estas instrucciones, que me ayudaron a solucionar problemas en PyDev y luego hacerlo funcionar PyCharm - https://enahwe.wordpress.com/2015/11/25/how-to-configure-eclipse-for-developing-with-python-and-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!


Yo uso conda para administrar mis paquetes de Python. Entonces, 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, luego haga lo siguiente:

conda install pyspark=2.2.0

Esto también atrae automáticamente py4j. 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.