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 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 e intento llamar a pyspark, Pycharm no encuentra 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 puedo empezar a usar PySpark con Pycharm, ¿alguna idea de cómo "enlazar" PyCharm con apache-pyspark ?.
Actualizar:
Luego busco la ruta de apache-spark y python para establecer las variables de entorno de Pycharm:
ruta 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
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é esta configuración propuesta por @ zero323
Configuración 1:
/usr/local/Cellar/apache-spark/1.5.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
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/
spark-defaults.conf
) o mediante argumentos de envío, lo mismo que con el cuaderno Jupyter . Los argumentos de envío se pueden definir en las variables de entorno de PyCharm, en lugar del código, si prefiere esta opción.Así es como resolví esto en mac osx.
brew install apache-spark
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
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
fuente
$SPARK_HOME/python
en la ruta de clase del intérprete y agregué las variables de entorno y funciona como se esperaba.Add pyspark and py4j to content root (use the correct Spark version)
me ayudó a completar el código. ¿Cómo lo consiguió cambiando de intérprete de proyectos?Aquí está la configuración que me funciona (Win7 64bit, PyCharm2017.3CE)
Configurar Intellisense:
Continúe y pruebe sus nuevas capacidades intellisense.
fuente
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 :
Opcionalmente, configure SPARK_CONF_DIR en variables de entorno.
fuente
Usé 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 obtengo un error de puerta de enlace cuando intento crear un SparkContext. Hay algún problema con Spark de homebrew, así que acabo de tomar Spark del sitio web de Spark (descargue el Pre-construido para Hadoop 2.6 y posterior) y apunte a 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 -con-python-y-chispa-en-hadoop /
Estoy seguro de que alguien ha pasado algunas horas golpeando su cabeza contra su monitor tratando de que esto funcione, ¡así que espero que esto ayude a salvar su cordura!
fuente
Utilizo
conda
para administrar mis paquetes de Python. Entonces, todo lo que hice en una terminal fuera de PyCharm fue:o, si desea una versión anterior, diga 2.2.0, luego haga lo siguiente:
conda install pyspark=2.2.0
Esto también tira automáticamente de py4j. PyCharm ya no se quejó
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.fuente
Mira este video.
Suponga que su directorio Spark Python es:
/home/user/spark/python
Suponga que su fuente de 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 la tendrí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 reconocidos dentro de pycharm, pero este método funcionó perfectamente.
fuente
SparkContext
objeto al comienzo de tu script. Observo esto porque el uso de la consola interactiva pyspark a través de la línea de comandos crea automáticamente el contexto para usted, mientras que en PyCharm, debe ocuparse de eso usted mismo; la sintaxis sería:sc = SparkContext()
Debe configurar PYTHONPATH, SPARK_HOME antes de iniciar IDE o Python.
Windows, editar variables de entorno, agregar Spark Python y Py4j en
Unix,
fuente
La forma más sencilla es instalar PySpark a través del intérprete de proyectos.
fuente
De la documentación :
Está invocando su script directamente con el intérprete CPython, lo 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 hacerlo funcionar en PyCharm configurando el intérprete del proyecto en spark-submit.
fuente
bin/pyspark
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
Luego obtuve 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 Run / Debug Configurations -> Variables de entorno del script.
fuente
Usé Pycharm para vincular Python y Spark. Tenía Java y Spark preinstalados en mi PC.
Estos son los pasos que seguí
Crear nuevo proyecto
En Configuración para nuevo proyecto -> Seleccioné Python3.7 (venv) como mi python. Este es el archivo python.exe presente en la carpeta venv dentro de mi nuevo proyecto. Puedes dar cualquier python disponible en tu pc.
En la configuración -> Estructura del proyecto -> Agregar Content_Root
Agregué dos carpetas zip como directorios de Spark
Crea un archivo de Python dentro del nuevo proyecto. Luego vaya a Editar configuraciones (en el menú desplegable del lado superior derecho) y seleccione Variables de entorno
Usé las siguientes variables de entorno y funcionó bien para mí
es posible que desee descargar adicionalmente winutils.exe y colocarlo en la ruta C: \ Users \ USER \ winutils \ bin
Proporcione las mismas variables de entorno dentro de Editar configuraciones -> Plantillas
Vaya a Configuración -> Intérprete de proyectos -> importar pyspark
¡Ejecute su primer programa pyspark!
fuente
Este tutorial de pyspark_xray , una herramienta que permite depurar el código pyspark en PyCharm, puede responder a su pregunta. Cubre tanto Windows como Mac.
Preparación
java
comando, si obtiene un error, luego descargue e instale java (versión 1.8.0_221 a partir de abril de 2020)winutils.exe
en lac:\spark-x.x.x-bin-hadoopx.x\bin
carpeta, sin este ejecutable, se producirá un error al escribir la salida del motorpip install pyspark
oconda install pyspark
Ejecutar configuración
Ejecuta la aplicación Spark en un clúster desde la línea de
spark-submit
comandos emitiendo un comando que envía un trabajo Spark al clúster. Pero desde PyCharm u otro IDE en una computadora portátil o PC local,spark-submit
no se puede usar para iniciar un trabajo de Spark. En su lugar, siga estos pasos para configurar una configuración de ejecución de demo_app de pyspark_xray en PyCharmHADOOP_HOME
valor enC:\spark-2.4.5-bin-hadoop2.7
SPARK_HOME
valor enC:\spark-2.4.5-bin-hadoop2.7
pyspark_xray
desde GithubPYTHONUNBUFFERED=1;PYSPARK_PYTHON=python;PYTHONPATH=$SPARK_HOME/python;PYSPARK_SUBMIT_ARGS=pyspark-shell;
driver.py
de pyspark_xray> demo_appcontrolador-ejecutar-config
fuente
La forma mas facil es
Reinicie Pycharm para actualizar el índice. Las dos carpetas mencionadas anteriormente están presentes en la carpeta Spark / Python de su instalación Spark. De esta manera, también obtendrá sugerencias de finalización de código de pycharm.
fuente
Intenté agregar el módulo pyspark a través del menú Project Interpreter, pero no fue suficiente ... hay una serie de variables de entorno del sistema que deben configurarse como
SPARK_HOME
y una ruta/hadoop/bin/winutils.exe
para leer archivos de datos locales. También debe utilizar las versiones correctas de Python, JRE, JDK, todas disponibles en las variables de entorno del sistema yPATH
. Después de buscar mucho en Google, las instrucciones de estos videos funcionaronfuente