更新时间:2022-08-12 GMT+08:00
DLI使用UDF操作指导
DLI支持用户使用Hive UDF(User Defined Function,用户定义函数)进行数据查询等操作。
使用UDF操作步骤
- 编写UDF。
- 在pom文件中添加以下配置信息。
<dependency> <groupId>org.apache.hive</groupId> <artifactId>hive-exec</artifactId> <version>1.2.1</version> </dependency>
- 代码中需要添加导入:import org.apache.hadoop.hive.ql.exec.UDF;
- 根据业务需要新建或修改样例代码中SumUdfDemo.java的内容。
- 在pom文件中添加以下配置信息。
- 生成jar包。使用“mvn package”命令编译打包程序,生成所需的Jar包。
根据编译结果提示,在对应的路径下获取生成的jar包文件,例如TestUDF.ja
- 上传TestUDF.jar至OBS上。上传数据至OBS可参考创建并提交Spark SQL作业中“步骤2:上传数据至OBS”。
- 将TestUDF.jar上传到DLI的程序包管理中,方便后续统一管理。
- 登录DLI管理控制台,单击“数据管理 > 程序包管理”。
- 在“程序包管理”页面,单击右上角的“创建”创建程序包。
- 在“创建程序包”对话框,配置以下参数。
- 包类型:选择“JAR”。
- OBS路径:3中程序包所在的OBS路径。
- 分组设置和组名称根据情况选择设置,方便后续识别和管理程序包。
- 单击“确定”,完成创建程序包。
- 创建Function。
在DLI Console上输入下列命令创建Function:
CREATE FUNCTION fun1 AS 'com.demo.SumUdfDemo' using jar 'obs://udf/TestUDF.jar';
- 重启原有SQL队列,使得创建的Function生效。
- 登录数据湖探索管理控制台,选择“资源管理 > 队列管理”,在对应“SQL队列”类型作业的“操作”列,单击“重启”。
- 在“重启队列”界面,选择“确定”完成队列重启。
- 使用Function。
在查询语句中使用5中创建的Function:
select fun1(ip) from ip_tables;
- 删除Function。
如果不再使用该Function,可执行以下语句删除Function:
Drop FUNCTION 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; } }