我在hive上存储在Tez上的hive上的表板上运行一个自定义UDAF。我们的Hive Jobs在纱线上运行,全部在Amazon EMR中设立。但是,由于我们拥有的镶木quet数据是用较旧版本的Parquet(1.5(生成的,因此我收到的警告正在填充纱线日志并导致磁盘在工作完成之前耗尽空间。
这是警告:
pm警告:org.apache.parquet.corruptstatistics:忽略 统计数据 因为create_by无法解析(请参阅Parquet-251(:Parquet-Mr版本
它还打印出堆栈轨道。我一直在试图使警告日志保持沉默,但无济于事。除此警告外,我设法关闭了几乎所有类型的日志。我尝试使用此处概述的AWS配置几乎修改每个Log4J设置文件。
我到目前为止尝试过的事情:
-
我在 tez-site.xml 中设置以下设置(以JSON格式编写它们,因为这是AWS所需的配置(,它在实际实例上以适当的XML格式以正确的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 上具有以下设置。这些设置有效地关闭了我的纱线日志中发生的所有日志记录,除了有问题的警告。
"mapreduce.map.log.level": "OFF", "mapreduce.reduce.log.level": "OFF", "yarn.app.mapreduce.am.log.level": "OFF"
-
我几乎所有其他 log4j.properties file。我在以前的AWS链接中显示的列表中找到的这些设置。
"log4j.logger.org.apache.parquet.CorruptStatistics": "OFF", "log4j.logger.org.apache.parquet": "OFF", "log4j.rootLogger": "OFF, console"
说实话,在这一点上,我只想找到某种方式关闭日志并以某种方式完成工作。我已经阅读了类似的问题,例如此链接,他们通过更改Log4J设置来修复它,但这是为了Spark,它似乎在Hive/Tez和Amazon上似乎并没有工作。任何帮助都将受到赞赏。
好的,所以我最终通过修改每个数据节点的Java Loggging.properties文件来修复此问题,并且EMR中的主节点。就我而言,该文件位于/ETC/Alternatives/jre/lib/logging.properties
我在Bootstrap Action文件中添加了一个shell命令,以自动将以下两行添加到属性文件的末尾:
org.apache.parquet.level = RESTRE
org.apache.parquet.corruptstatistics.Level = RESTRE
只是想更新,以防其他任何人面对同一问题,这实际上不是由亚马逊正确设置,需要大量的反复试验。