hive使用udf函数执行sql造成死锁分析
hive使用udf函数执行sql造成死锁分析
使用场景:hive表有多个字段使用码值存储,hive数据导入hbase时将码值替换成具体描述,利udf函数的初始化initialize方法将码值加载到map,然后用此函数实现码值转换。但在实际应用中造成hive卡死现象。下面是我实现代码:初始化将hive所有码值加载到map!
在evaluate方法内从map获取码值并返回
initialize方法只在使用此函数时执行一次,evaluate方法传一次参数调用一次,比如一条sql用到3次码值替换字段,initialize只执行3次,但在另外一个map也会再执行3次initialize,我们是用cdh搭建的集群在实际使用中会频繁出现hive卡死现象,底层日志如下:
当时查阅资料,跟网上另一篇文章描述现象相似,连接如下https://blog.****.net/wflh323/article/details/90635670,但我的码值表字段只有两个字段kv,总共也就五千条数据,机器资源也不紧张,还是出现类似现象,上篇文章提到是在sql编译时没有释放锁所致,对这个错误不太了解,也没有找到有效解决办法,于是想办法直接从hive里读取文本解析避免此问题,如有高手知道解决办法,请留言告知!