tutorial true tool specific sparkconf spark packaged only one false español applications apache-spark config pyspark

apache spark - true - ¿Es posible obtener la configuración actual del contexto de chispa en PySpark?



spark-submit (9)

Estoy tratando de obtener el camino para spark.worker.dir para el actual sparkcontext .

Si lo configuré explícitamente como un config param , puedo volver a leerlo desde SparkConf , pero ¿hay SparkConf forma de acceder a la config completa (incluidos todos los valores predeterminados) utilizando PySpark ?


No estoy seguro si puede obtener todas las configuraciones predeterminadas fácilmente, pero específicamente para el directorio de trabajo, es bastante directo:

from pyspark import SparkFiles print SparkFiles.getRootDirectory()


Para Spark 2+ también puedes usar cuando usas scala

spark.conf.getAll; //spark as spark session


Para una descripción completa de su entorno y configuración Spark, encontré útiles los siguientes fragmentos de código:

SparkContext:

for item in sorted(sc._conf.getAll()): print(item)

Configuración de Hadoop:

hadoopConf = {} iterator = sc._jsc.hadoopConfiguration().iterator() while iterator.hasNext(): prop = iterator.next() hadoopConf[prop.getKey()] = prop.getValue() for item in sorted(hadoopConf.items()): print(item)

Variables de entorno:

import os for item in sorted(os.environ.items()): print(item)


Puedes usar:

ssc.sparkContext.getConf.getAll

Por ejemplo, a menudo tengo lo siguiente en la parte superior de mis programas Spark:

logger.info(ssc.sparkContext.getConf.getAll.mkString("/n"))


Sí: sc._conf.getAll ()

Que usa el método:

SparkConf.getAll()

como se accede por

SparkContext.sc._conf

Tenga en cuenta el subrayado: eso hace que esto sea complicado. Tuve que mirar el código fuente de la chispa para resolverlo;)

Pero funciona:

In [4]: sc._conf.getAll() Out[4]: [(u''spark.master'', u''local''), (u''spark.rdd.compress'', u''True''), (u''spark.serializer.objectStreamReset'', u''100''), (u''spark.app.name'', u''PySparkShell'')]


Solo para los registros, la versión análoga de Java:

Tuple2<String, String> sc[] = sparkConf.getAll(); for (int i = 0; i < sc.length; i++) { System.out.println(sc[i]); }


Spark 1.6+

sc.getConf.getAll.foreach(println)


Spark 2.1+

spark.sparkContext.getConf().getAll() donde spark es tu sparksession (te da un dict con todas las configuraciones configuradas)


configuración de actualización en Spark 2.3.1

Para cambiar las configuraciones de chispa predeterminadas, puede seguir estos pasos:

Importar las clases requeridas

from pyspark.conf import SparkConf from pyspark.sql import SparkSession

Obtenga las configuraciones predeterminadas

spark.sparkContext._conf.getAll()

Actualiza las configuraciones predeterminadas

conf = spark.sparkContext._conf.setAll([(''spark.executor.memory'', ''4g''), (''spark.app.name'', ''Spark Updated Conf''), (''spark.executor.cores'', ''4''), (''spark.cores.max'', ''4''), (''spark.driver.memory'',''4g'')])

Detener la Sesión de Spark actual

spark.sparkContext.stop()

Crear una sesión Spark

spark = SparkSession.builder.config(conf=conf).getOrCreate()