如何减lessSpark的运行时输出的冗长?

如何减lessSpark运行时产生的跟踪信息量?

默认值太冗长,

如何closures它,并在需要时打开它。

谢谢

详细模式

scala> val la = sc.parallelize(List(12,4,5,3,4,4,6,781)) scala> la.collect 15/01/28 09:57:24 INFO SparkContext: Starting job: collect at <console>:15 15/01/28 09:57:24 INFO DAGScheduler: Got job 3 (collect at <console>:15) with 1 output ... 15/01/28 09:57:24 INFO Executor: Running task 0.0 in stage 3.0 (TID 3) 15/01/28 09:57:24 INFO Executor: Finished task 0.0 in stage 3.0 (TID 3). 626 bytes result sent to driver 15/01/28 09:57:24 INFO DAGScheduler: Stage 3 (collect at <console>:15) finished in 0.002 s 15/01/28 09:57:24 INFO DAGScheduler: Job 3 finished: collect at <console>:15, took 0.020061 s res5: Array[Int] = Array(12, 4, 5, 3, 4, 4, 6, 781) 

静音模式(预期)

 scala> val la = sc.parallelize(List(12,4,5,3,4,4,6,781)) scala> la.collect res5: Array[Int] = Array(12, 4, 5, 3, 4, 4, 6, 781) 

引用“ 学习星火 ”一书。

您可能会发现在shell中打印的日志语句让人分心。 您可以控制日志logging的详细程度。 为此,您可以在名为log4j.properties的conf目录中创build一个文件。 Spark开发人员已经为这个名为log4j.properties.template的文件包含了一个模板。 为了减less日志logging的冗余,请复制一个名为conf / log4j.properties的conf / log4j.properties.template,并find以下行:

log4j.rootCategory=INFO, console

然后降低日志级别,以便只显示WARN消息和更高级别,方法是将其更改为以下内容:

log4j.rootCategory=WARN, console

当你重新打开shell时,你应该会看到更less的输出。

我认为你可以试试:

 sc.setLogLevel("WARN") 

它为我工作(火花1.4.1)。

从源代码中的评论:

有效的日志级别包括:ALL,DEBUG,ERROR,FATAL,INFO,OFF,TRACE,WARN

在Spark应用程序级别loggingconfiguration

使用这种方法, 不需要在集群中更改火花应用程序的代码

  • 我们从log4j.properties.template创build一个新的文件log4j.properties
  • 然后使用log4j.rootCategory属性更改详细程度。
  • 说,我们需要检查给定jar的log4j.rootCategory=ERROR, console然后, log4j.rootCategory=ERROR, console

火星提交命令会

 spark-submit \ ... #Other spark props goes here --files prop/file/location \ --conf 'spark.executor.extraJavaOptions=-Dlog4j.configuration=prop/file/location' \ --conf 'spark.driver.extraJavaOptions=-Dlog4j.configuration=prop/file/location' \ jar/location \ [application arguments] 

现在您只会看到ERROR分类的日志。


普通Log4j方式wo Spark(但需要更改代码)

为包orgakka设置closures日志

 import org.apache.log4j.{Level, Logger} Logger.getLogger("org").setLevel(Level.ERROR) Logger.getLogger("akka").setLevel(Level.ERROR) 

在Unix中,你总是可以将stderrpipe理到/dev/null ,即:

run-example org.apache.spark.examples.streaming.NetworkWordCount localhost 9999 2> /dev/null