Estoy tratando de obtener la ruta de acceso a spark.worker.dir para el actual sparkcontext.

Si me establezca explícitamente como un config param, puedo leerlo de nuevo fuera de SparkConf, pero es de todos modos para acceder a la completa config (incluyendo todos los valores predeterminados) utilizando PySpark?

  • No se puede obtener la conf objeto, pero no las cosas que te busca. Los valores predeterminados no están disponibles a través de SparkConf (que está codificado en las fuentes). Y spark.worker.dir suena como una configuración para el Trabajador demonio, no algo que su aplicación iba a ver.
  • Mi respuesta se dirige directamente a su pregunta : por favor proporcione comentarios

11 Comentarios

  1. 68

    Sí: sc._conf.getAll()

    Que utiliza el método:

    SparkConf.getAll()

    al que se accede por

    SparkContext.sc._conf

    Nota el carácter de Subrayado: que hace este truco. He tenido que mirar la chispa de código fuente para averiguarlo 😉

    Pero no 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')]
    • perfecto, gracias!
    • también, tenga en cuenta que el carácter de subrayado significa que el paquete de desarrolladores piensan que el acceso a este elemento de datos no es una gran idea.
    • «Tenga en cuenta que sólo los valores especificados explícitamente a través de spark-defaults.conf, SparkConf, o la línea de comandos aparecerá. Para todas las demás propiedades de configuración, puede suponer que el valor predeterminado se utiliza.» (consulte spark.apache.org/docs/latest/…)
    • ¿alguna idea de cómo puedo conseguir estos no aparecen en aparecer en python sin tener que ir a una página web? E. g. ¿cómo puedo obtener el valor de «chispa.por defecto.el paralelismo»?
    • Véase mi respuesta a continuación: stackoverflow.com/a/46215539/179014
  2. 51

    Chispa 2.1+

    spark.sparkContext.getConf().getAll() donde spark es su sparksession (le da un dict con todos los ajustes configurados)

    • Este debe ser aceptado por respuesta.
    • no. Cuando la pregunta no era spark2.1. La respuesta funciona para todas las versiones de chispa, especialmente de los antiguos
    • para chispa 2.4.0, devuelve una lista de tuplas en lugar de un diccionario
    • estamos utilizando una Chispa 2.4, por lo que puede usted por favor, arrojar algo de luz sobre el siguiente código spark.sparkContext.getConf().getAll() chispa de La SparkSession sparkContext – (Como ya tenemos la SparkSession de la versión 2.0+ ¿qué hace este sparkContext implica) Podría usted por favor me ayude a conseguir una comprensión más profunda sobre esto ?
  3. 28

    Chispa 1.6+

    sc.getConf.getAll.foreach(println)
    • 1.6.3: >>> sc.getConf.getAll.foreach(println) AttributeError: ‘SparkContext’ el objeto no tiene ningún atributo ‘getConf’
    • He utilizado el mismo sc.getConf.getAll.foreach(println) como sugerido por @ecesena y funcionó bien para mí (en la Scala) – Quizás la sintaxis no es para Python?
    • No en pyspark 1.6.0 como se puede ver aquí: spark.apache.org/docs/1.6.0/api/python/…
  4. 13

    de configuración de actualización en Chispa 2.3.1

    Para cambiar el valor predeterminado de la chispa de las configuraciones que usted puede seguir estos pasos:

    Importar las clases requeridas

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

    Obtener las configuraciones predeterminadas

    spark.sparkContext._conf.getAll()

    Actualización de 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')])

    Parar la Chispa de la Sesión

    spark.sparkContext.stop()

    Crear una Chispa Sesión

    spark = SparkSession.builder.config(conf=conf).getOrCreate()
    • Hola Bob, tengo una pregunta acerca de esto. Si usted consigue la configuración a través de: la chispa.sparkContext._conf.getAll () ¿Cómo se puede, a continuación, utilizar ese resultado para actualizar la configuración con la inclusión de nuevos ajustes. Creo que esta sería una buena adición a su respuesta.
    • para incluir nuevas opciones que necesita para reiniciar la chispa contexto con su actualizado conf. su no respuesta, después de la actualización de la conf, nos detuvimos en el contexto y comenzó de nuevo con el nuevo conf.
  5. 9

    Para una descripción completa de su Chispa entorno y la configuración que he encontrado los siguientes fragmentos de código útil:

    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)
  6. 4

    Por desgracia, no, la Chispa de la plataforma a partir de la versión 2.3.1 no proporciona ninguna forma de obtener acceso mediante programación el valor de cada propiedad en tiempo de ejecución. Proporciona varios métodos para acceder a los valores de las propiedades que se establezca explícitamente a través de un archivo de configuración (como spark-defaults.conf), establecidas a través de la SparkConf objeto cuando se crea la sesión, o el conjunto a través de la línea de comandos cuando se envió el trabajo, pero ninguno de estos métodos, se mostrará el valor predeterminado de la propiedad para la que no se establece explícitamente. Para completar, las mejores opciones son:

    • La Chispa de la aplicación de la interfaz de usuario web, por lo general en http://<driver>:4040, tiene un «Ambiente» de la ficha con el valor de una propiedad de la tabla.
    • La SparkContext mantiene una referencia oculta a su configuración en PySpark, y la configuración proporciona un getAll método: spark.sparkContext._conf.getAll().
    • Chispa SQL proporciona el SET comando que devolverá una tabla de valores de la propiedad: spark.sql("SET").toPandas(). También puede utilizar SET -v para incluir una columna con la descripción de la propiedad.

    (Estos tres métodos devuelven el mismo los datos del clúster.)

  7. 3

    Puede utilizar:

    ssc.sparkContext.getConf.getAll

    Por ejemplo, a menudo tengo la siguiente en la parte superior de mi Chispa programas:

    logger.info(ssc.sparkContext.getConf.getAll.mkString("\n"))
  8. 0

    No está seguro de si usted puede conseguir todos los ajustes por defecto fácilmente, pero específicamente para el trabajador dir, es bastante straigt-adelante:

    from pyspark import SparkFiles
    print SparkFiles.getRootDirectory()
  9. 0

    Sólo para los registros de manera análoga, la versión de java:

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

    Por Chispa 2+ también se puede utilizar cuando scala

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

Dejar respuesta

Please enter your comment!
Please enter your name here