Apache spark输出消息前缀为[error]

时间:2016-03-17 12:19:09

标签: scala apache-spark sbt

此字数按预期工作:

System.setProperty("hadoop.home.dir", "H:\\winutils");

val sparkConf = new SparkConf().setAppName("GroupBy Test").setMaster("local[1]")
val sc = new SparkContext(sparkConf)

def main(args: Array[String]) {
  val text_file = sc.textFile("h:\\data\\small.txt")

  val counts = text_file.flatMap(line => line.split(" "))
      .map(word => (word, 1))
      .reduceByKey(_ + _)

  counts.foreach(println);
}

所有输出消息都以[错误]为前缀 例如:

[error] 16/03/17 12:13:58 INFO Utils: Successfully started service 'org.apache.spark.network.netty.NettyBlockTransferService' on por
[error] 16/03/17 12:13:58 INFO NettyBlockTransferService: Server created on 55715
[error] 16/03/17 12:13:58 INFO BlockManagerMaster: Trying to register BlockManager
[error] 16/03/17 12:13:58 INFO BlockManagerMasterEndpoint: Registering block manager localhost:55715 with 1140.4 MB RAM, BlockManage
[error] 16/03/17 12:13:58 INFO BlockManagerMaster: Registered BlockManager

我可以使用以下方法阻止显示这些错误信息:

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

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

但这不能解决问题。

[error]不应显示,因为这些不是错误消息,而是信息:

[error] 16/03/17 12:13:58 INFO Utils: Successfully started service 'org.apache.spark.network.netty.NettyBlockTransferService' on por
[error] 16/03/17 12:13:58 INFO NettyBlockTransferService: Server created on 55715
[error] 16/03/17 12:13:58 INFO BlockManagerMaster: Trying to register BlockManager
[error] 16/03/17 12:13:58 INFO BlockManagerMasterEndpoint: Registering block manager localhost:55715 with 1140.4 MB RAM, BlockManage
[error] 16/03/17 12:13:58 INFO BlockManagerMaster: Registered BlockManager

更新:

为什么显示[错误]消息,因为它们不是错误?

1 个答案:

答案 0 :(得分:4)

这些不是Spark标签,而是sbt标签。在Spark的默认log4j配置文件中,您可以找到:

log4j.appender.console.target=System.err

因此默认情况下,它将在控制台中打印到stderr

您可能正在fork配置中将true设置为run。执行此操作时,在{s}中打印到stderr的所有内容前缀为[error]

您应该可以使用OutputStrategy控制它。