Impala UDF的使用与一次报表异常
背景:今天是五一最后一天,本来快快乐乐回到家玩,走到门口,突然听到业务群里有甲方在抱怨报表异常。瞬间进入到工作状态(当然是假的-.-)。看到Azkaban调度没有明显报错,只是简单一句Error when run script script.1。这就奇了怪了,怎么会发生这种怪事呢 ?
这个时候,作为一个新人,最需要的就是脑洞大开,到底怎么解决这个问题呢?
核心思路
一般解决问题的思路呢就是尽可能地让你的代码跑起来,而在本次问题中的调度跑的就是SQL,准确来说是Impala SQL,但是局限于数据量又不能直接跑啊,聪明的读者肯定想到了用explain语法,这样可以暴露出脚本中的bug,而又不触发大量的运行压力。
结果,真给我找出来了,就是其中的一个自定义函数失效了。
那么,这类就要涉及到impala中的udf函数了。为甚魔UDF函数会失效呢?
接下来,请做好笔记:
1
impala udf函数的创建函数有两种语法,一种是显式地声明返回值类型,一种是隐式不声明返回值类型,而这并不是他们最大的区别,他们最大的区别是:创建之后是否持久化,也就是临时函数跟永久函数的区别了。
那么,具体如何创建并使用呢?
--创建永久udf(重启后function不消失)
create function if not exists md5
location "hdfs:///user/hadoop/MD5.jar"
SYMBOL="com.stark.decode";
本萌新就是这么修改的,重跑调度之后数据恢复正常,报表也能正常显示了,萌新也能继续欢乐的小长假时光了。
NOW我们走吧!
仅以此次解决异常的新路历程分享给各位大佬,希望给位读者在开发的路上能够收获愈多,发现工作中的有趣的细节,欢迎在留言处分享,或者你有什么小建议,想看的技术都可以私信留言,看到会及时回复的。
本文由Robin Zhang编辑。唯一版权属于蔚来大数据私人所有,未经授权,禁止转载,谢谢!