Yo trabajo en un clúster donde no tengo el permiso para cambiar el archivo log4j.propiedades para detener el registro info, mientras que el uso de pyspark (como se explicó en la primera respuesta aquí.) La siguiente solución, como se explica en la pregunta anterior, la primera respuesta de trabajo por chispa-shell (scala)

import org.apache.log4j.Logger
import org.apache.log4j.Level

Pero por chispa con python (es decir, pyspark), no funcionaba ni el siguiente

Logger.getLogger("org").setLevel(Level.OFF)
Logger.getLogger("akka").setLevel(Level.OFF)

¿Cómo puedo dejar el detallado de la impresión de la información en pyspark SIN cambiar de log4j.archivo de propiedades?

InformationsquelleAutor hmi2015 | 2015-09-10

3 Comentarios

  1. 19

    He utilizado sc.setLogLevel("ERROR") porque no tiene acceso de escritura a nuestro grupo de log4j.archivo de propiedades. Desde el docs:

    Controlar nuestro nivel de registro. Esto anula cualquier definido por el usuario configuración de registro. Válido niveles de registro incluyen: TODOS, de DEPURACIÓN, de ERROR, FATAL, INFO, APAGADO, de SEGUIMIENTO, de ADVERTIR

    • Bonito, gracias! 🙂
    • ¿Por qué esta solución no funciona para mí? sc.setLogLevel(«Error») Traceback (la mayoría de llamada reciente last): File «<stdin>», line 1, in <módulo> AttributeError: ‘SparkContext’ el objeto no tiene ningún atributo ‘setLogLevel’
    • Esto no parece afectar el ejecutor de registro para mí
    • Probado esto, pero parece que no la desactivación de log4j registros, todavía estoy viendo algo como esto, incluso si puedo configurar el nivel de registro en «OFF»: Causada por: java.util.NoSuchElementException: Ninguno.obtener en la scala.Ninguno$.get(Opción.scala:347) en la scala.Ninguno$.get(Opción.scala:345)
    • Yo uso pyspark con PYthon 3.4. Yo uso dataframe que se implementa en Scala es por eso que yo vi a estos scala de registro de datos.
    • No hace ninguna diferencia para mí
    • No me funciona 🙁

  2. 4

    Esto ayuda para mí:

    import logging
    s_logger = logging.getLogger('py4j.java_gateway')
    s_logger.setLevel(logging.ERROR)
    spark_context = SparkContext()   
  3. 1

    de https://stackoverflow.com/a/32208445/3811916:

    logger = sc._jvm.org.apache.log4j
    logger.LogManager.getLogger("org").setLevel( logger.Level.OFF )
    logger.LogManager.getLogger("akka").setLevel( logger.Level.OFF )

    hace el truco para mí. Esto es esencialmente cómo se hace dentro de PySpark propias pruebas:

    class QuietTest(object):
        def __init__(self, sc):
            self.log4j = sc._jvm.org.apache.log4j
    
        def __enter__(self):
            self.old_level = self.log4j.LogManager.getRootLogger().getLevel()
    self.log4j.LogManager.getRootLogger().setLevel(self.log4j.Level.FATAL)

Dejar respuesta

Please enter your comment!
Please enter your name here