Scala 以编程方式减少spark shell中的日志

Scala 以编程方式减少spark shell中的日志,scala,shell,apache-spark,Scala,Shell,Apache Spark,我是否可以通过删除所有“INFO”标志以编程方式减少spark shell中的日志? 这是垃圾邮件我的窗口,我不能分析真正的输出 例如: 15/01/09 12:23:02 INFO Executor: Finished task 0.0 in stage 0.0 (TID 0). 649 bytes result sent to driver 15/01/09 12:23:02 INFO TaskSetManager: Finished task 0.0 in stage 0.0 (TID 0

我是否可以通过删除所有
“INFO”
标志以编程方式减少spark shell中的日志? 这是垃圾邮件我的窗口,我不能分析真正的输出 例如:

15/01/09 12:23:02 INFO Executor: Finished task 0.0 in stage 0.0 (TID 0). 649 bytes result sent to driver
15/01/09 12:23:02 INFO TaskSetManager: Finished task 0.0 in stage 0.0 (TID 0) in 500 ms on localhost (1/1)
15/01/09 12:23:02 INFO DAGScheduler: Stage 0 (count at MainApp.scala:31) finished in 0.520 s
15/01/09 12:23:02 INFO TaskSchedulerImpl: Removed TaskSet 0.0, whose tasks have all completed, from pool 
15/01/09 12:23:02 INFO DAGScheduler: Job 0 finished: count at MainApp.scala:31, took 0.639191 s

如果你有其他选择的话,请寻找

这会删除大多数信息(但不是全部)

或作为util方法:

def setLogLevel(level: String): Unit = {
  setLogLevel(Level.toLevel(level, Level.INFO))
}

def setLogLevel(level: Level): Unit = {
  Logger.getLogger("org").setLevel(level)
  Logger.getLogger("akka").setLevel(level)
}
spark提交--options artifact.jar 2>stderr.log

然后在新窗口中使用
tail-f stderr.log


这将保持stdout的窗口干净,并在需要时能够访问日志

只要将其添加到Spark源代码中,它就会删除日志

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

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

甚至
val level=level.ERROR
如果您还想删除警告。是您可以使用的所有其他选项。
import org.apache.log4j.Logger
import org.apache.log4j.Level

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