如何创建 Hive 的 UDF?
  bhG8jH8b1hMi 2023年11月02日 28 0


UDF(User Defined Function)又称:用户自定义函数。可以像 concat, substr那样的 hive 内置的函数一样直接用于 select 语句,简化复杂查询。

编写 UDF 其实就是写一个类继承 org.apache.hadoop.hive.ql.exec.UDF 该类,在类里面写一个名为 evaluate 的方法,在方法里写相应的业务逻辑,最后打成 jar 包,提交到服务器上,在 hive 的命令行模式下添加这个 jar 包到环境变量,使用里面写好的 evaluate 方法。

编写 UDF 基本步骤

  • 所需 pom 文件如下:
<dependency>
    <groupId>org.apache.hive</groupId>
    <artifactId>hive-exec</artifactId>
    <version>2.3.0</version>
</dependency>
  • 继承 org.apache.hadoop.hive.ql.exec.UDF ,重写 evaluate 方法:
package udf;

import org.apache.hadoop.hive.ql.exec.UDF;

/**
 * 用于判断员工薪水级别的函数
 */
public class CheckSalaryGrade extends UDF {

	public String evaluate(String salary) {
		// 判断薪水的级别
		int sal = Integer.parseInt(salary.trim());
		
		if (sal < 1000) {
			return "Grade C";
		} else if (sal < 3000) {
			return "Grade B";
		} else {
			return "Grade A";
		}
	}	
}
  • 打成 jar 包,提交到服务器上:
  • 如何创建 Hive 的 UDF?_jar

  • 执行 hive 命令,启动 hive 的命令行模式
  • 添加 jar 包:
  • 如何创建 Hive 的 UDF?_jar_02

  • 创建临时函数:
create temporary function checksalary as "udf.CheckSalaryGrade";

如何创建 Hive 的 UDF?_apache_03

  • 使用 UDF 执行查询:
select ename, sal, checksalary(sal) from emp;

如何创建 Hive 的 UDF?_udf_04

  • 销毁临时函数:
drop temporary function checksalary;

如何创建 Hive 的 UDF?_apache_05


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
bhG8jH8b1hMi