Esta es una copia de la pregunta de otra persona en otro foro que nunca fue respondida, así que pensé en volver a hacerla aquí, ya que tengo el mismo problema. (Ver http://geekple.com/blogs/feeds/Xgzu7/posts/351703064084736 )
Tengo Spark instalado correctamente en mi máquina y puedo ejecutar programas de Python con los módulos de pyspark sin errores al usar ./bin/pyspark como mi intérprete de Python.
Sin embargo, cuando intento ejecutar el shell Python normal, cuando intento importar módulos pyspark, aparece este error:
from pyspark import SparkContext
y dice
"No module named pyspark".
¿Cómo puedo arreglar esto? ¿Hay alguna variable de entorno que deba configurar para apuntar a Python a los encabezados / bibliotecas / etc. de pyspark? Si mi instalación de Spark es / spark /, ¿qué rutas de pyspark debo incluir? ¿O los programas pyspark solo se pueden ejecutar desde el intérprete de pyspark?
fuente
Respuestas:
Aquí hay un método simple (¡si no te preocupas por cómo funciona!)
Ve a tu caparazón de Python
importar los módulos necesarios
¡¡¡Hecho!!!
fuente
Si imprime tal error:
Agregue $ SPARK_HOME / python / build a PYTHONPATH:
fuente
Resulta que pyspark bin está CARGANDO python y cargando automáticamente las rutas correctas de la biblioteca. Echa un vistazo a $ SPARK_HOME / bin / pyspark:
¡Agregué esta línea a mi archivo .bashrc y los módulos ahora se encuentran correctamente!
fuente
export SPARK_HOME=~/dev/spark-1.1.0
imagínate. Los nombres de sus carpetas pueden variar.no ejecute su archivo py como:
python filename.py
en su lugar use:spark-submit filename.py
fuente
import pyspark
lo que fallará en la línea de comando o en un script ejecutado. Tienes que a. ejecute pyspark a través de spark-submit según lo previsto o b. agregue $ SPARK_HOME / python a $ PYTHONPATH.Al exportar la ruta SPARK y la ruta Py4j, comenzó a funcionar:
Por lo tanto, si no desea escribirlos cada vez que desee iniciar el shell de Python, es posible que desee agregarlo a su
.bashrc
archivofuente
Apache Spark
instalación, ¿alguna idea?libexec/python/build
sirve el directorio, pero Spark 1.6.2 no lo tieneEn Mac, uso Homebrew para instalar Spark (fórmula "apache-spark"). Luego, configuro PYTHONPATH de esta manera para que la importación de Python funcione:
Reemplace "1.2.0" con la versión actual de apache-spark en su mac.
fuente
Para una ejecución de Spark en pyspark, se requieren dos componentes para trabajar juntos:
pyspark
paquete pythonAl iniciar cosas con spark-submit o pyspark, estos scripts se encargarán de ambos, es decir, configuran su PYTHONPATH, PATH, etc., para que su script pueda encontrar pyspark, y también inician la instancia de Spark, configurándose de acuerdo con sus parámetros. , por ejemplo, maestro X
Alternativamente, es posible omitir estos scripts y ejecutar su aplicación Spark directamente en el intérprete de Python como
python myscript.py
. Esto es especialmente interesante cuando los scripts de chispa comienzan a volverse más complejos y eventualmente reciben sus propios argumentos.getOrCreate()
desde el objeto constructor.Por lo tanto, su secuencia de comandos puede tener algo como esto:
fuente
Para deshacerse de
ImportError: No module named py4j.java_gateway
, debe agregar las siguientes líneas:fuente
En Windows 10, lo siguiente funcionó para mí. Agregué las siguientes variables de entorno usando Configuración > Editar variables de entorno para su cuenta :
(cambie "C: \ Programming \ ..." a la carpeta en la que ha instalado Spark)
fuente
Para los usuarios de Linux, la siguiente es la forma correcta (y no codificada) de incluir la biblioteca pyspark en PYTHONPATH. Ambas partes de PATH son necesarias:
Observe a continuación que la versión de la biblioteca comprimida se determina dinámicamente, por lo que no la codificamos.
fuente
Estoy ejecutando un clúster de chispa, en CentOS VM, que se instala desde los paquetes de cloudera yum.
Tuve que configurar las siguientes variables para ejecutar pyspark.
fuente
Esto es lo que hice para usar mi distribución de Anaconda con Spark. Esta es la versión Spark independiente. Puede cambiar la primera línea al contenedor de Python de sus usuarios. Además, a partir de Spark 2.2.0, PySpark está disponible como paquete independiente en PyPi, pero todavía tengo que probarlo.
fuente
Puede obtener el
pyspark path
en python usandopip
(si ha instalado pyspark usando PIP) como se muestra a continuaciónfuente
Yo tuve el mismo problema.
También asegúrese de que está utilizando la versión correcta de Python y que la está instalando con la versión correcta de pip. en mi caso: tenía python 2.7 y 3.x. He instalado pyspark con
pip2.7 instalar pyspark
Y funcionó.
fuente
Recibí este error porque el script de Python que estaba intentando enviar se llamaba pyspark.py ( facepalm ). La solución fue configurar mi PYTHONPATH como se recomendó anteriormente, luego cambiar el nombre de la secuencia de comandos a pyspark_test.py y limpiar el pyspark.pyc que se creó en función del nombre original de mi secuencia de comandos y que borró este error.
fuente
En el caso de DSE (DataStax Cassandra & Spark) Es necesario agregar la siguiente ubicación a PYTHONPATH
Luego use dse pyspark para obtener los módulos en la ruta.
fuente
Tuve este mismo problema y agregaría una cosa a las soluciones propuestas anteriormente. Cuando use Homebrew en Mac OS X para instalar Spark, deberá corregir la dirección de la ruta de py4j para incluir libexec en la ruta (recuerde cambiar la versión de py4j por la que tiene);
fuente
py4j
solo la carpeta, no funcionó. Use el archivo zip ...En mi caso, se estaba instalando en un dist_package de python diferente (python 3.5) mientras que yo estaba usando python 3.6, por lo que lo siguiente ayudó:
fuente
También puede crear un contenedor Docker con Alpine como sistema operativo e instalar Python y Pyspark como paquetes. Eso lo tendrá todo en contenedores.
fuente