Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 如何以编程方式在Pyspark中获取日志级别_Apache Spark_Pyspark_Log4j - Fatal编程技术网

Apache spark 如何以编程方式在Pyspark中获取日志级别

Apache spark 如何以编程方式在Pyspark中获取日志级别,apache-spark,pyspark,log4j,Apache Spark,Pyspark,Log4j,我需要知道,在Pyspark中以编程方式,这是日志级别 我知道我可以通过以下方式设置: # spark is a SparkSession object spark.sparkContext.setLogLevel(log_level) 但是没有一种等效的方法来检索日志级别 有什么想法吗?谢谢 Spark是开源的,对吗? 源代码将向您展示文档中没有的许多内容。单元测试将为您提供有关教程中未涉及的内容的提示 Demo:浏览并搜索setLogLevel 好吧,Github内部搜索通常很糟糕,但是对

我需要知道,在Pyspark中以编程方式,这是日志级别

我知道我可以通过以下方式设置:

# spark is a SparkSession object
spark.sparkContext.setLogLevel(log_level)
但是没有一种等效的方法来检索日志级别


有什么想法吗?谢谢

Spark是开源的,对吗?
源代码将向您展示文档中没有的许多内容。单元测试将为您提供有关教程中未涉及的内容的提示

Demo:浏览并搜索
setLogLevel

好吧,Github内部搜索通常很糟糕,但是对于一个特定的关键字,它值得一试。事实上,第一个答案给出了一个有趣的片段,来自单元测试(这里重置为分支2.4):


因此
setLogLevel
方法似乎是log4japi的(非常)薄的包装

正是这样:


通过访问Spark会话的JVM(下面是py4j),我终于想出了一个解决方案:


很可能有更好的方法。谢谢您的评论。我终于想出了Python的解决方案(我不能使用Scala)。
val originalLevel = org.apache.log4j.Logger.getRootLogger().getLevel
try {
  // Avoid outputting a lot of expected warning logs
  spark.sparkContext.setLogLevel("error")
...
} finally {
  spark.sparkContext.setLogLevel(originalLevel.toString)
...
}
def setLogLevel(logLevel: String) {
  ...
  Utils.setLogLevel(org.apache.log4j.Level.toLevel(upperCased))
}
def setLogLevel(l: org.apache.log4j.Level) {
  org.apache.log4j.Logger.getRootLogger().setLevel(l)
}
def get_log_level(spark):
    log_manager = spark._jvm.org.apache.log4j.LogManager
    trace = spark._jvm.org.apache.log4j.Level.TRACE
    debug = spark._jvm.org.apache.log4j.Level.DEBUG
    info = spark._jvm.org.apache.log4j.Level.INFO
    warn = spark._jvm.org.apache.log4j.Level.WARN
    error = spark._jvm.org.apache.log4j.Level.ERROR
    fatal = spark._jvm.org.apache.log4j.Level.FATAL
    logger = log_manager.getRootLogger()

    if logger.isEnabledFor(trace):
        return "TRACE"
    elif logger.isEnabledFor(debug):
        return "DEBUG"
    elif logger.isEnabledFor(info):
        return "INFO"
    elif logger.isEnabledFor(warn):
        return "WARN"
    elif logger.isEnabledFor(error):
        return "ERROR"
    elif logger.isEnabledFor(fatal):
        return "FATAL"
    else:
        return None