使用 Java 编写好 UDF 或 UDAF 函数后,Hive 要如何使用这些自定义函数呢?
1 在 HDFS 上创建存放 jar 包的目录
hadoop fs -mkdir -p /hive/private/lib
2 将打包好的 jar 包上传到创建好的目录下
hadoop fs -put gps_to_bd.jar /hive/private/lib
hadoop fs -ls /hive/private/lib # 查看是否上传成功
3 创建函数
Hive 函数分为两种:永久函数与临时函数
临时函数仅在当前会话有效。而永久函数添加一次之后即可永久使用。
创建函数时需要注意:
- 函数名需要是
数据库名.函数名
的形式 - 类名需要完整,即
包名.类名
- HDFS 上 jar 包的路径需要是全路径,即
hdfs://...
,并且数据库有权限访问该路径
3.1 永久函数
格式:CREATE FUNCTION '数据库名.函数名' AS '包名.类名' USING JAR 'HDFS全路径'
hive (hadoop)> CREATE FUNCTION hadoop.gps_to_bd AS 'cn.hive.Gps_to_Bd' USING JAR 'hdfs://ns1//hive/private/lib/gps_to_bd.jar';
3.2 临时函数
hive (hadoop)> add jar 'hdfs://ns1//hive/private/lib/gps_to_bd.jar';
hive (hadoop)> CREATE TEMPORARY FUNCTION hadoop.gps_to_bd AS 'cn.hive.Gps_to_Bd';
PS:如果函数名已经存在了,可以使用drop function db_name.fun_name
删除创建好的函数。
4 验证函数
最后,别忘了根据函数的功能验证创建好的函数。
网友评论