0.緣起
在使用beeline跑hive查詢時候會產生很多無用的INFO日志,這些日志看起來非常雜亂,如下圖:
如何在beeline窗口中去除多余的日志,使其看起來簡潔一些呢?
1. HiveServer中的Logging配置
一般來說,我們會在Beeline客戶端(Hive 0.14以后)看到HiveServer2操作日志。
以下為HiveServer2中與日志相關的參數:
參數 | 默認值 | 描述 |
hive.server2.logging.operation.enabled | true | 添加於Hive 0.14.0,如果為true,HiveServer2將保存操作日志並使其可供客戶端使用。 |
hive.server2.logging.operation.log.location | ${java.io.tmpdir}/${user.name}/operation_logs | 添加於Hive 0.14.0. 如果啟用了日志記錄功能,則存儲操作日志的頂級目錄。 |
hive.server2.logging.operation.verbose(Hive 0.14到1.1) | false | 如果為true,則可用於客戶端的HiveServer2操作日志將是詳細的。 由hive.server2.logging.operation.level替換為Hive 1.2.0。 |
hive.server2.logging.operation.level(Hive 1.2以后) | EXECUTION | HiveServer2操作日志記錄模式可供客戶端在會話級別設置。 為此,hive.server2.logging.operation.enabled應設置為true。 其允許的值為: |
2. 解決方案
a) 在使用beeline時加入以下設置即可--hiveconf hive.server2.logging.operation.level=NONE
b) 或者在hive-site.xml中加入如下配置也可以禁用在beeline中顯示額外信息
<property> <name>hive.server2.logging.operation.enabled</name> <value>true</value> </property> <property> <name>hive.server2.logging.operation.log.location</name> <value>/opt/log/hive/operation_logs</value> </property>
3. 實戰演示
bin/beeline --hiveconf hive.server2.logging.operation.level=NONE
輸出:
果然是簡潔了很多!嗯哼