1.上传jar包到HDFS
| Hadoop fs -put local_path/test_udf.jar hdfs_path/test_udf.jar |
2.创建Hive 永久函数
| CREATE FUNCTION db_name.test_function_name AS 'com.baidu.traffic.udf.TestFunction'USING JAR 'hdfs://hdfs_path/test_udf.jar'; |
注:建议创建函数时指定库名,使用函数时也要加。大脑执执行sql时需指定数据源,不置顶库名时将无法应用其他数据源的UDF函数。
3.重新加载udf函数
登陆hiveserver2并重新加载UDF函数。
注:需要在每个hiveserver2中执行reload function;
| beeline !connect jdbc:hive2://host:port/db_name reload function; |
坑1.实测reload functions 不生效
官网中给出reload functions的用法在实际使用中不起作用。
LanguageManual DDL - Apache Hive - Apache Software Foundation
坑2.在Hive Client中创建的永久函数载其他HiveClient或HiveServer2引用前需要使用reload function;
4.查看UDF
| show functions like"*test_function_name*"; |
5.删除函数
| DROP FUNCTION [IF EXISTS] db_name.test_function_name; |



