文档简介:
DLI支持用户使用HiveUDF(User Defined Function,用户定义函数)进行数据查询等操作。
使用UDF操作步骤
1.编写UDF。
a. 在pom文件中添加以下配置信息。
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-exec</artifactId>
<version>1.2.1</version>
</dependency>复制
b. 代码中需要添加导入:
import org.apache.hadoop.hive.ql.exec.UDF;复制
c. 根据业务需要新建或修改样例代码中SumUdfDemo.java的内容。
2.生成jar包。使用“mvn package”命令编译打包程序,生成所需的Jar包。例如,使用IDEA工具编写好程序代码后,单击工具界面最下方的“Terminal”,在命令行窗口输入“mvn package”编译打包程序。
详见下图:编译打包程序
根据编译结果提示,在对应的路径下获取生成的jar包文件,例如TestUDF.jar
3.上传TestUDF.jar至OBS上。上传数据至OBS可参考创建并提交Spark SQL作业中“步骤2:上传数据至OBS”。
4.将TestUDF.jar上传到DLI的程序包管理中,方便后续统一管理。
a. 登录DLI管理控制台,单击“数据管理 > 程序包管理”。
b. 在“程序包管理”页面,单击右上角的“创建”创建程序包。
c. 在“创建程序包”对话框,配置以下参数。
i.包类型:选择“JAR”。
ii.OBS路径:3中程序包所在的OBS路径。
iii.分组设置和组名称根据情况选择设置,方便后续识别和管理程序包。
d. 单击“确定”,完成创建程序包。
5.创建Function。
在DLI Console上输入下列命令创建Function:
CREATE FUNCTION fun1 AS 'com.demo.SumUdfDemo' using jar 'obs://udf/TestUDF.jar';复制
6.重启原有SQL队列,使得创建的Function生效。
a. 登录数据湖探索管理控制台,选择“队列管理”,在对应“SQL队列”类型作业的“操作”列,单击“重启”。
b. 在“重启队列”界面,选择“确定”完成队列重启。
7.使用Function。
在查询语句中使用5中创建的Function:
selectfun1(ip) from ip_tables;复制
8.删除Function。
如果不再使用该Function,可执行以下语句删除Function:
DropFUNCTION fun1;复制
样例代码
SumUdfDemo.java中的样例代码如下所示:
package com.demo; import org.apache.hadoop.hive.ql.exec.UDF; public class SumUdfDemo extends UDF { public Int evaluate(Int a, Int b) { return a + b; } }