with tutorial spark org examples example español data python apache-spark

python - org - error SparkContexts múltiple en tutorial



spark 2.3 6 (4)

Estoy intentando ejecutar el tutorial muy básico de Spark + Python pyspark; consulte http://spark.apache.org/docs/0.9.0/quick-start.html

Cuando intento inicializar un nuevo SparkContext,

from pyspark import SparkContext sc = SparkContext("local[4]", "test")

Obtuve el siguiente error:

ValueError: Cannot run multiple SparkContexts at once

Me pregunto si mis intentos anteriores de ejecutar código de ejemplo cargaron algo en la memoria que no se borró. ¿Hay alguna forma de enumerar los SparkContexts actuales en la memoria y / o eliminarlos para que se ejecute el código de muestra?


¿Ha intentado usar sc.stop () antes de intentar crear otro SparkContext?


En lugar de configurar configuraciones personalizadas para el indicador de SparkContext en PySpark, puede establecerlas al momento de iniciar PySpark.

p.ej

pyspark --master yarn --queue my_spark_pool1 --conf spark.driver.extraLibraryPath="${LD_LIBRARY_PATH}" --conf spark.executorEnv.LD_LIBRARY_PATH="${LD_LIBRARY_PATH}"

Aplicará estas conf al objeto sc en PySpark.


Esto sucede porque cuando escribe "pyspark" en el terminal, el sistema inicializó automáticamente SparkContext (¿quizás un objeto?), Por lo que debe detenerlo antes de crear uno nuevo.

Puedes usar

sc.stop()

Antes de crear tu nuevo SparkContext.

Además, puedes usar

sc = SparkContext.getOrCreate()

en lugar de

sc = SparkContext()

Soy nuevo en Spark y no sé mucho sobre el significado de los parámetros de la función SparkContext (), pero el código que se muestra arriba funcionó para mí.


Resulta que ejecutar ./bin/pyspark interactivamente AUTOMÁTICAMENTE CARGA UN SPARKCONTEXT. Esto es lo que veo cuando comienzo a pyspark:

Welcome to ____ __ / __/__ ___ _____/ /__ _/ // _ // _ `/ __/ ''_/ /__ / .__//_,_/_/ /_//_/ version 0.9.1 /_/ Using Python version 2.6.6 (r266:84292, Feb 22 2013 00:00:18) Spark context available as sc.

... para que pueda ejecutar "del sc" al principio o seguir adelante y usar "sc" como se define automáticamente.

El otro problema con el ejemplo es que parece mirar una ubicación regular del sistema de archivos NFS, mientras que realmente está tratando de mirar el sistema de archivos HDFS para Hadoop. Tuve que cargar el archivo README.md en la ubicación de $ SPARK_HOME usando "hadoop fs -put README.md README.md" antes de ejecutar el código.

Aquí está el programa de ejemplo modificado que ejecuté interactivamente:

from pyspark import SparkContext logFile = "README.md" logData = sc.textFile(logFile).cache() numAs = logData.filter(lambda s: ''a'' in s).count() numBs = logData.filter(lambda s: ''b'' in s).count() print "Lines with a: %i, lines with b: %i" % (numAs, numBs)

Y aquí está la versión modificada del archivo de Python independiente:

"""SimpleApp.py""" from pyspark import SparkContext logFile = "README.md" # Should be some file on your system sc = SparkContext("local", "Simple App") logData = sc.textFile(logFile).cache() numAs = logData.filter(lambda s: ''a'' in s).count() numBs = logData.filter(lambda s: ''b'' in s).count() print "Lines with a: %i, lines with b: %i" % (numAs, numBs)

que ahora puedo ejecutar usando $ SPARK_HOME / bin / pyspark SimpleApp.py