Hive UDF调试打印的方法

日志的打印

导入用到的包

import org.apache.commons.logging.Log;

import org.apache.commons.logging.LogFactory;

 

通过工厂模式获取一Log对象:

static final Log LOG = LogFactory.getLog(NewGetKeyWithMaxValue.class.getName());

将NewGetKeyWithMaxValue替换成自己的类名。

 

使用LOG来打印日志:

LOG.info("hello") ;

 

 

日志定位

日志会输出到Job的日志文件里面,可以在界面上查看。

首先,找到SQL的tracking URL,进入这个链接

 

Map或者Reduce查看此SQL执行过程中所执行的map task或reduce task

在task列表中选择一个点击进入

 

点击Logs,就可以进入日志展示的页面

 

我们自行打印的日志在syslog里面,默认的情况下syslog并不会显示全部内容,有可能我们自行打印的内容不在里面,找到Click here for full log,点击里面的here,就可以得到完整的日志。

 

 

UDAF中

函数

日志位置

iterate

Map

Merge

Reduce

terminatePartial

Map

Terminate

Reduce

 

注意事项

如果添加了打印输出,测试数据必须比较小,最好不要超过1000条。

UDFUDAF中的有些函数是每一条数据都要执行一次的,打印的日志量很容易就会超过原始数据量,而日志的保存位置是每个任务执行的本地机器上面,其容量不足以保存太多日志。

你可能感兴趣的:(hive,udf,大数据技术)