我在Tez上的Hive上存放为镶木地板的桌子上运行自定义UDAF。我们的Hive作业在YARN上运行,所有这些都在Amazon EMR中设置。但是,由于我们的镶木地板数据是使用较旧版本的Parquet(1.5)生成的,因此我收到的警告是填写YARN日志并导致磁盘在作业完成之前耗尽空间。
这是警告:
PM警告:org.apache.parquet.CorruptStatistics:忽略 统计 因为无法解析created_by(参见PARQUET-251):parquet-mr version
它还会打印堆栈轨道。我一直试图让警告日志无声无息。除了这个警告之外,我已经成功关闭了几乎所有类型的日志。我已尝试使用AWS here概述的AWS配置修改每个Log4j设置文件。
到目前为止我尝试过的事情:
我在 tez-site.xml 中设置了以下设置(以JSON格式编写它们,因为这是AWS配置所需的)当然,它在实际的实例上采用了正确的XML格式
"tez.am.log.level": "OFF",
"tez.task.log.level": "OFF",
"tez.am.launch.cluster-default.cmd-opts": "-Dhadoop.metrics.log.level=OFF -Dtez.root.logger=OFF,CLA",
"tez.task-specific.log.level": "OFF;org.apache.parquet=OFF"
我在 mapred-site.xml 上进行了以下设置。这些设置有效地关闭了我的YARN日志中发生的所有日志记录,但有问题的警告除外。
"mapreduce.map.log.level": "OFF",
"mapreduce.reduce.log.level": "OFF",
"yarn.app.mapreduce.am.log.level": "OFF"
我在几乎所有其他 log4j.properties 文件中都有这些设置。我在上一个AWS链接中显示的列表中找到了。
"log4j.logger.org.apache.parquet.CorruptStatistics": "OFF",
"log4j.logger.org.apache.parquet": "OFF",
"log4j.rootLogger": "OFF, console"
老实说,在这一点上,我只想找到某种方式关闭日志并以某种方式运行工作。我已经阅读了类似的问题,比如这个link,他们通过更改log4j设置来解决这个问题,但这适用于Spark,它似乎不适用于Hive / Tez和Amazon。任何帮助表示赞赏。
答案 0 :(得分:0)
好的,所以我最终通过修改每个单个数据节点和EMR中主节点的java logging.properties文件来解决这个问题。就我而言,该文件位于/etc/alternatives/jre/lib/logging.properties
我在bootstrap操作文件中添加了一个shell命令,以自动将以下两行添加到属性文件的末尾:
org.apache.parquet.level =严重
org.apache.parquet.CorruptStatistics.level = SEVERE
只是想更新,以防其他人遇到同样的问题,因为亚马逊没有正确设置,并且需要大量的试错。