如何在Spark中抑制镶木地板日志消息?

时间:2015-05-05 12:25:26

标签: logging apache-spark parquet

如何阻止此类消息进入我的spark-shell控制台。

5 May, 2015 5:14:30 PM INFO: parquet.hadoop.InternalParquetRecordReader: at row 0. reading next block
5 May, 2015 5:14:30 PM INFO: parquet.hadoop.InternalParquetRecordReader: RecordReader initialized will read a total of 89213 records.
5 May, 2015 5:14:30 PM INFO: parquet.hadoop.InternalParquetRecordReader: block read in memory in 2 ms. row count = 120141
5 May, 2015 5:14:30 PM INFO: parquet.hadoop.InternalParquetRecordReader: at row 0. reading next block
5 May, 2015 5:14:30 PM INFO: parquet.hadoop.InternalParquetRecordReader: block read in memory in 2 ms. row count = 89213
5 May, 2015 5:14:30 PM WARNING: parquet.hadoop.ParquetRecordReader: Can not initialize counter due to context is not a instance of TaskInputOutp
[Stage 12:=================================================>    (184 + 4) / 200]

由于

6 个答案:

答案 0 :(得分:5)

来自SPARK-8118 issue comment的解决方案似乎有效:

  

您可以通过创建包含以下内容的属性文件来禁用聊天输出:

org.apache.parquet.handlers=java.util.logging.ConsoleHandler
java.util.logging.ConsoleHandler.level=SEVERE
  

然后在应用程序运行时将文件的路径传递给Spark   提交。假设该文件位于/tmp/parquet.logging.properties中   (当然,这需要在所有工作节点上都可用):

spark-submit \
     --conf spark.driver.extraJavaOptions="-Djava.util.logging.config.file=/tmp/parquet.logging.properties" \`
      --conf spark.executor.extraJavaOptions="-Djava.util.logging.config.file=/tmp/parquet.logging.properties" \
      ... 

积分转到Justin Bailey

答案 1 :(得分:3)

我相信这种情况已经退步了 - 他们正在为镶木地板整合进行一些大的合并/改变...... https://issues.apache.org/jira/browse/SPARK-4412

答案 2 :(得分:2)

这适用于Spark 2.0。编辑文件spark / log4j.properties并添加:

20:00:00

FileScanRDD和CodecPool的行将有助于处理一些非常冗长的日志。

答案 3 :(得分:1)

我知道这个问题是WRT Spark,但是我最近在CDH 5.x中使用Parquet with Hive时遇到了这个问题并找到了解决办法。详细信息如下:https://issues.apache.org/jira/browse/SPARK-4412?focusedCommentId=16118403

我在下面的JIRA票证中发表评论的内容:

  

这也是CDH中分发的镶木地板版本中的一个问题   5.x的在这种情况下,我使用parquet-1.5.0-cdh5.8.4(此处提供的来源:http://archive.cloudera.com/cdh5/cdh/5

     

但是,我找到了通过提交的mapreduce作业的解决方法   蜂巢。我确信这也适用于Spark。

     
      
  • 将以下属性添加到作业的配置中(在我的情况下,我将它们添加到hive-site.xml,因为将它们添加到   mapred-site.xml无效:
  •   
     

<property>
  <name>mapreduce.map.java.opts</name>
  <value>-Djava.util.logging.config.file=parquet-logging.properties</value>
</property>
<property>
  <name>mapreduce.reduce.java.opts</name>
  <value>-Djava.util.logging.config.file=parquet-logging.properties</value>
</property>
<property>
  <name>mapreduce.child.java.opts</name>
  <value>-Djava.util.logging.config.file=parquet-logging.properties</value>
</property>
     
      
  • 使用以下内容创建名为parquet-logging.properties的文件:
  •   
     

# Note: I'm certain not every line here is necessary. I just added them to cover all possible
# class/facility names.you will want to tailor this as per your needs.
.level=WARNING
java.util.logging.ConsoleHandler.level=WARNING

parquet.handlers=java.util.logging.ConsoleHandler
parquet.hadoop.handlers=java.util.logging.ConsoleHandler
org.apache.parquet.handlers=java.util.logging.ConsoleHandler
org.apache.parquet.hadoop.handlers=java.util.logging.ConsoleHandler

parquet.level=WARNING
parquet.hadoop.level=WARNING
org.apache.parquet.level=WARNING
org.apache.parquet.hadoop.level=WARNING
     
      
  • 将文件添加到作业中。在Hive中,这样做最容易:
    ADD FILE /path/to/parquet-logging.properties;
  •   
     

完成此操作后,当您运行Hive查询时,仅应该使用镶木地板   将警告(和更高级别)消息记录到stdout容器日志。

答案 4 :(得分:0)

要关闭除ERROR之外的所有消息,您需要编辑conf / log4j.properties文件,更改以下行:

activateTab()

$scope.activateTab = function(tab) {
  $scope.active = {}; //reset
  $scope.active[tab] = true;
}

希望它可以提供帮助!

答案 5 :(得分:0)

不是解决方案,但如果你建立自己的火花,那么这个文件:https://github.com/Parquet/parquet-mr/blob/master/parquet-hadoop/src/main/java/parquet/hadoop/ParquetFileReader.java 拥有大多数日志消息,您现在可以注释掉它们。

相关问题