如何抑制蜂巢警告
Posted
技术标签:
【中文标题】如何抑制蜂巢警告【英文标题】:How to supress hive warning 【发布时间】:2019-03-14 06:14:39 【问题描述】:我是 Hive 的新手。尝试执行一个查询,将数据输出到一个文件。
以下是我的查询:
hive -e "SET hive.auto.convert.join=false;set hive.server2.logging.operation.level=NONE;SET mapreduce.map.memory.mb = 16384; SET mapreduce.map.java.opts='-Djava.net.preferIPv4Stack=true -Xmx13107M';SET mapreduce.reduce.memory.mb = 13107; SET mapreduce.reduce.java.opts='-Djava.net.preferIPv4Stack=true -Xmx16384M';设置 hive.support.concurrency = false; SET hive.exec.dynamic.partition=true;SET hive.exec.dynamic.partition.mode=nonstrict;放 hive.exec.max.dynamic.partitions.pernode=10000;SET hive.exec.max.dynamic.partitions=100000;放 hive.exec.max.created.files=1000000;SET mapreduce.input.fileinputformat.split.maxsize=128000000;放 hive.hadoop.supports.splittable.combineinputformat=true;设置 hive.execution.engine=先生;设置 hive.enforce.bucketing = true;hive 查询 在这里;" > /tmp/分析
但在 /tmp/analysis 文件中,我可以看到以下警告。
警告:调用了方法类 org.apache.commons.logging.impl.SLF4JLogFactory#release()。 警告:请参阅http://www.slf4j.org/codes.html#release 以获得解释。
我怎样才能抑制它?
【问题讨论】:
【参考方案1】:来自 Hive 文档https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Cli
日志记录:
Hive 使用 log4j 进行日志记录。默认情况下,CLI 不会将日志发送到控制台。 对于 0.13.0 之前的 Hive 版本,默认日志记录级别为 WARN。从 Hive 0.13.0 开始,默认的日志记录级别是 INFO。 默认情况下,Hive 将使用 Hive 安装的 conf/
目录中的 hive-log4j.default
,该目录将日志写入 /tmp/<userid>/hive.log
并使用 WARN
级别。
出于调试目的,通常需要将日志发送到标准输出和/或更改日志记录级别。这些可以从命令行完成,如下所示:
$HIVE_HOME/bin/hive --hiveconf hive.root.logger=INFO,console
hive.root.logger
指定日志记录级别以及日志目标。将控制台指定为目标将日志发送到标准错误(而不是日志文件)。
如果用户愿意,可以通过添加如下所示的参数将日志发送到控制台:
bin/hive --hiveconf hive.root.logger=INFO,console //for HiveCLI (deprecated)
bin/hiveserver2 --hiveconf hive.root.logger=INFO,console
或者,用户只能通过以下方式更改日志记录级别:
bin/hive --hiveconf hive.root.logger=INFO,DRFA //for HiveCLI (deprecated)
bin/hiveserver2 --hiveconf hive.root.logger=INFO,DRFA
另一个日志记录选项是 TimeBasedRollingPolicy(适用于 Hive 1.1.0 及更高版本,HIVE-9001),提供如下所示的 DAILY 选项:
bin/hive --hiveconf hive.root.logger=INFO,DAILY //for HiveCLI (deprecated)
bin/hiveserver2 --hiveconf hive.root.logger=INFO,DAILY
希望对你有帮助!
【讨论】:
【参考方案2】:使用不会在输出中打印任何日志的 hive 静默模式
hive -S -e "SET hive.auto.convert.join=false;set hive.server2.logging.operation.level=NONE;SET mapreduce.map.memory.mb = 16384; SET mapreduce.map.java.opts='-Djava.net.preferIPv4Stack=true -Xmx13107M';SET mapreduce.reduce.memory.mb = 13107; SET mapreduce.reduce.java.opts='-Djava.net.preferIPv4Stack=true -Xmx16384M';set hive.support.concurrency = false; SET hive.exec.dynamic.partition=true;SET hive.exec.dynamic.partition.mode=nonstrict; SET hive.exec.max.dynamic.partitions.pernode=10000;SET hive.exec.max.dynamic.partitions=100000; SET hive.exec.max.created.files=1000000;SET mapreduce.input.fileinputformat.split.maxsize=128000000; SET hive.hadoop.supports.splittable.combineinputformat=true;set hive.execution.engine=mr; set hive.enforce.bucketing = true;hive query over here;" > /tmp/analysis
【讨论】:
以上是关于如何抑制蜂巢警告的主要内容,如果未能解决你的问题,请参考以下文章