- 现象:创建UDF后,有的人可以调用,有的人调用不了。或者有时候可以,有时候又不行。
- 原因:应该为存在多个hiveserver2,然后仅有一个hiveserver2的udf生效。其他hiveserver2的metastore信息未同步导致的。
- 解决:通过beeline或其他工具登录相应的hiveserver2执行reload function(低版本用该命令);高版本执行reload functions。也可以通过重启另外的hiveserver2解决。
0: jdbc:hive2://xxxx-3:10000/default> show functions like '*udf*';
+-------------------------------+--+
| tab_name |
+-------------------------------+--+
| default.udf_json2array |
+-------------------------------+--+
1 rows selected (0.029 seconds)
0: jdbc:hive2://xxxx-3:10000/default> reload function;
No rows affected (0.153 seconds)
0: jdbc:hive2://xxxx-3:10000/default> show functions like '*udf*';
+-------------------------------+--+
| tab_name |
+-------------------------------+--+
| default.udf_json2array |
| default.udf_split |
+-------------------------------+--+
2 rows selected (0.028 seconds)