如何减少Spark运行时输出的冗长程度?

new*_*ike 46 scala apache-spark

如何减少Spark运行时生成的跟踪信息量?

默认值太冗长,

如何关闭它,并在需要时打开它.

谢谢

详细模式

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)
Run Code Online (Sandbox Code Playgroud)

静音模式(预期)

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)
Run Code Online (Sandbox Code Playgroud)

小智 66

Spark 1.4.1

sc.setLogLevel("WARN")
Run Code Online (Sandbox Code Playgroud)

来自源代码中的评论:

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

Spark 2.x - 2.3.1

sparkSession.sparkContext().setLogLevel("WARN")

Spark 2.3.2

sparkSession.sparkContext.setLogLevel("WARN")

  • 在Spark 2.x中,您需要设置sparkSession.sparkContext().setLogLevel("WARN") (2认同)

Shy*_*nki 37

引用" 学习星火 "一书.

您可能会发现在shell中打印的日志记录语句会分散注意力.您可以控制日志记录的详细程度.为此,您可以在conf目录中创建名为log4j.properties的文件.Spark开发人员已经为此文件添加了一个名为log4j.properties.template的模板 .要使日志记录更简洁,请复制conf/log4j.properties.template,名为conf/log4j.properties, 并找到以下行:

log4j.rootCategory=INFO, console

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

log4j.rootCategory=WARN, console

当您重新打开shell时,您应该看到更少的输出.


mrs*_*vas 7

在Spark应用程序级别记录配置

通过这种方法,无需为Spark应用程序在集群中更改代码

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

Spark Submit命令将是

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] 
Run Code Online (Sandbox Code Playgroud)

现在,您将只看到错误分类的日志。


Spark的纯Log4j方式(但需要更改代码)

设置日志记录OFF的包orgakka

import org.apache.log4j.{Level, Logger}

Logger.getLogger("org").setLevel(Level.ERROR)
Logger.getLogger("akka").setLevel(Level.ERROR)
Run Code Online (Sandbox Code Playgroud)