使用beeline/hive時,該如何停止打印INFO日志


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。 其允許的值為:
NONE:忽略任何日志記錄。
EXECUTION:記錄任務完成情況
PERFORMANCE: 執行+性能日志
VERBOSE:所有日志

 

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

輸出:

果然是簡潔了很多!嗯哼

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM