从Hive中的Java UDF中找到标准输出或标准错误的位置

时间:2015-05-21 01:29:49

标签: hive cloudera-cdh

我正在Hive中编写Java UDF并进行调试我通过LogFactory.getLog对象将一些消息打印到标准输出。但我想知道我在哪里可以看到这些消息。我正在使用CDH 5.4和Hive 0.12

1 个答案:

答案 0 :(得分:0)

默认情况下,Hive将其日志存储在/ tmp / currentuser位置。在Unix / Linux提示符下使用hive命令调用Hive shell时,Hive会在显示Hive提示符之前使用行Hive history file =日志的位置显示日志的位置。示例输出如下所示:

[root@localhost root]# hive

Logging initialized using configuration in jar:file:/usr/lib/hive/lib/hive-common-0.10.0-cdh4.4.0.jar!/hive-log4j.properties

Hive history file=/tmp/root/hive_job_log_46a27ee2-7ac1-43f5-a66b-20d6ea982421_849420221.txt

当您从Hive CLI运行查询时,会为每次查询运行存储日志(BeeLine和JDBC客户端不会创建这些日志)。您可以按如下方式管理这些查询日志文件:

通过在hive-site.xml和Hive的Hive服务配置安全阀中指定以下属性,设置查询日志文件的位置(默认为/ tmp / user)并通过禁用基于进度的查询日志记录来减少日志记录量用于hive-site.xml的客户端配置安全阀:

 <property> 
          <name>hive.querylog.location</name> 
          <value>/Changed/Log/Directory</value> 
    </property> 
    <property> 
         <name>hive.querylog.enable.plan.progress</name> 
         <value>false</value> 
    </property>
  • 将更改保存到配置中。

  • 重新启动Hive服务并重新部署客户端配置。