在很多程序中,我们都可以通过输出日志的形式来得到程序运行情况,通过这些输出日志来调试程序,Hive也不例外。在Hive中,使用的是Log4j来输出日志,默认情况下,CLI是不能将日志信息输出到控制台的。在Hive0.13.0之前的版本,默认的日志级别是WARN,在Hive0.13.0开始,默认的日志级别是INFO。默认的日志存放在/tmp/文件夹的hive.log文件中,全路径就是/tmp//hive.log。

注:这里有一个的bug,在本地模式下,log文件名为".log",而不是"hive.log",可以在这里看到https://issues.apache.org/jira/browse/HIVE-5528,这个bug将会在Hive0.13.0中得到解决。

在默认的日志级别情况下,是不能将DEBUG信息输出,这样一来出现的各种详细的错误信息都是不能查看到的。但是我们可以通过以下两种方式修改log4j输出的日志级别,从而修改log4j输出的日志级别,从而利用这些调试日志进行错误定位,具体做法如下:

[wyp@master ~]$ hive --hiveconf hive.root.logger=DEBUG,console

或者在${HIVE_HOME}/conf/hive-log4j.properties文件中找到hive.root.logger属性,并将其修改为下面的设置:

hive.root.logger=DEBUG,console

上面两种方式的设置各有优劣,方法一的设定只是对本次会话有效,下次如果还想修改日志输出级别需要重新设定,但不是每时每刻都需要修改日志的输出级别,我们只有在碰到错误的时候才会看看详细信息,所以这种方法还是不错的;对于方法二将日志输出级别设定到配置文件中,这个设定对所有用户都生效,避免了每次开启CLI的时候都要重新设置,但是这种情况无时无刻都会打印HQL一大堆的运行日志,看起来比较不雅。

另外还有一点就是上一篇文章Hive几种参数配置的方法中提到的,有一些系统级的参数,在HQL中设定是无效的。这里就是一个很好的例子。因为设定Log的参数读取会在会话建立以前完成。这也就是说,我们不能通过下面的方法来修改log4j的日志输出级别:

hive> set hiveconf:hive.root.logger=DEBUG,console;

这样你在进入CLI的时候将会得到一些类似下面的调试信息:

[wyp@master /home/q/hive-0.11.0-bin/conf]$ hive

................................为了篇幅,省略了很多............................

13/12/25 15:14:54 DEBUG parse.VariableSubstitution: Substitution is on: hive

................................为了篇幅,省略了很多............................

13/12/25 15:14:54 DEBUG security.Groups: Creating new Groups object

13/12/25 15:14:54 DEBUG util.NativeCodeLoader: Trying to load the c...

library for your platform... using builtin-java classes where applicable

13/12/25 15:14:54 DEBUG security.JniBasedUnixGroupsMappingWithFallback:

Falling back to shell based

13/12/25 15:14:54 DEBUG security.JniBasedUnixGroupsMappingWithFallback:

Group mapping impl=org.apache.hadoop.security.ShellBasedUnixGroupsMapping

13/12/25 15:14:54 DEBUG security.UserGroupInformation: hadoop login

13/12/25 15:14:54 DEBUG security.UserGroupInformation: using local

user:UnixPrincipal: wyp

13/12/25 15:14:54 DEBUG security.UserGroupInformation:

UGI loginUser:wyp (auth:SIMPLE)

................................为了篇幅,省略了很多............................

下面举个日志调试的例子,在没有修改日志输出级别之前,有下面的查询所有表的HQL如下:

hive> show tables;

FAILED: Error in metadata: java.lang.RuntimeException: Unable to instantiate

org.apache.hadoop.hive.metastore.HiveMetaStoreClient

FAILED: Execution Error, return code 1 from

org.apache.hadoop.hive.ql.exec.DDLTask

hive>

得到上面的错误,我们从上面的错误输出只知道是元数据有问题,具体的错误也不知道是啥,这时候如果我们修改日志调试级别hive.root.logger=DEBUG,console,我们再看看运行上面语句的错误输出:

hive> show tables;

................................为了篇幅,省略了很多............................

13/12/25 15:23:58 INFO metastore.ObjectStore: ObjectStore, initialize called

13/12/25 15:23:58 ERROR Datastore.Schema: Failed initialising database.

Access denied for user 'datalog5'@'l-datalog5.data.cn1' (using password: YES)

org.datanucleus.exceptions.NucleusDataStoreException:

Access denied for user 'datalog5'@'l-datalog5.data.cn1' (using password: YES)

at org.datanucleus.store.rdbms.ConnectionFactoryImpl

$ManagedConnectionImpl.getConnection(ConnectionFactoryImpl.java:536)

at org.datanucleus.store.rdbms.RDBMSStoreManager.

(RDBMSStoreManager.java:290)

at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

................................为了篇幅,省略了很多............................

通过上面的错误堆栈我们就可以将问题定位到数据库连接的问题上,这么一来错误的定位范围就大大减少了,我们可以查看hive-site.xml文件中的数据库连接配置是否正确,从而解决问题。

hive 日誌怎麼查看_Hive日志调试 | 学步园相关推荐

  1. hive 日誌怎麼查看_Hive各个日志里都存放了什么信息?

    审计日志 首先,对于审计日志来说,记录了某个时间点某个用户从哪个IP发起对HiveServer或者MetaStore的请求以及记录执行的语句是什么. 如下的HiveServer审计日志,表示在2016 ...

  2. mysql查看session对应的ip_Mysql 查看session连接数,状态 | 学步园

    命令: show processlist; 如果是root帐号,你能看到所有用户的当前连接.如果是其它普通帐号,只能看到自己占用的连接. show processlist;只列出前100条,如果想全列 ...

  3. 【方案】去哪儿网徐磊:如何利用开源技术构建日处理130亿+的实时日志平台?...

    转自:http://mp.weixin.qq.com/s?__biz=MzIzMzEzODYwOA==&mid=2665284466&idx=1&sn=2b06a5298217 ...

  4. codeigniter_如何在浏览器中查看CodeIgniter日志文件

    codeigniter by Seun Matt 通过Seun Matt 如何在浏览器中查看CodeIgniter日志文件 (How to View CodeIgniter Log Files in ...

  5. 如何查询oracle最近报警信息,教你怎样用Oracle方便地查看报警日志错误

    在网上查了几天的资料,尝试综合清除告警日志内容及建外部表的方式来解决这一问题. 一:备份并清除告警日志内容 将每天的告警日志备份好,然后进行清除. 1:备份报警日志 在$ORACLE_HOME/SID ...

  6. oracle告警日志备份,教你怎样用Oracle方便地查看报警日志错误

    在网上查了几天的资料,尝试综合清除告警日志内容及建外部表的方式来解决这一问题. 一:备份并清除告警日志内容 将每天的告警日志备份好,然后进行清除. 1:备份报警日志 在$ORACLE_HOME/SID ...

  7. SmartNews:基于 Flink 加速 Hive 日表生产的实践

    简介: 将 Flink 无缝地集成到以 Airflow 和 Hive 为主的批处理系统的技术挑战和应对方案. 本文介绍了 SmartNews 利用 Flink 加速 Hive 日表的生产,将 Flin ...

  8. 日志查看_实时查看容器日志

    实时查看容器日志 介绍一款使用了几个月的开源小工具,Dozzle.它是一款轻量.简单的容器日志查看工具. 本篇将简单介绍如何使用它,包括搭配 Traefik,以及如何快速从源码构建它. 写在前面 这款 ...

  9. iis php日志查看工具,教你如何查看IIS日志

    网站的服务器会把访问信息.服务器的工作以及每一个文件的调用,记录在这个IIS日志里,所以学会查看IIS日志不仅可以相对准确的了解一些页面的访问,还可以得知搜索引擎蜘蛛的情况,目前虽然有很多的IIS日志 ...

  10. ADB命令连接逍遥模拟器并查看安卓日志

    1.先进入逍遥模拟器安装目录(MEmu文件夹下),如:D:\Program Files\Microvirt\MEmu 在CMD下输入:adb connect 127.0.0.1:21503 2.实时查 ...

最新文章

  1. 产业|一文读懂自动驾驶汽车产业链上下游
  2. 实现一个简单的文件上传进度条
  3. H5学习从0到1-H5的元素属性(3)
  4. 安装keras and theano于google colab上
  5. Mybatis Xml 传入动态字段 排序
  6. 前端学习(1501):一次帮别人解决问题的案例
  7. 阿里云服务器排坑指南
  8. Scheduler:Event UID not valid(转)
  9. 一款超强可视化报表工具:RDP报表工具
  10. 数学实验matlab韩明版答案,数学实验(MATLAB版)[韩明,王家宝,李林 编著] 2012年版...
  11. ET和LT的原理和区别
  12. day42.自动关机小程序
  13. win10 u盘 修复计算机,怎么用u盘修复windows10专业版系统
  14. 【矿渣】【玩客云】玩客云驱动OLED屏幕
  15. “%,/,//”的用法
  16. python梯度提升回归树_梯度提升回归树(GBDT)
  17. 自然语言处理NLP 2022年最新综述:An introduction to Deep Learning in Natural Language Processing
  18. Open Vas漏洞扫描工具安装及实战
  19. python3 [爬虫入门实战]爬虫之mongoDB数据库的安装配置与可视化
  20. PL-VIO(点线slam)学习笔记(持续更新)

热门文章

  1. SQL Server 2012 自动增长列,值跳跃问题
  2. JPDA 架构研究19 - JDI的连接模块
  3. 华为2台3928千兆电口对接trunk启不来
  4. java原始套接字打开_原始套接字-IP头包含选项
  5. Spring Data 2020.0.0 正式 GA
  6. python kmeans聚类_K-means聚类算法的Python实现
  7. CURL+preg_match()
  8. PHPMailer如何获取企业微信授权码
  9. Python bcrypt 加密验证密码
  10. LINUX C正确遍历environ