0
点赞
收藏
分享

微信扫一扫

如何创建 Hive 的 UDF?

mjjackey 2023-10-26 阅读 47


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?_udf

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

  • 创建临时函数:

create temporary function checksalary as "udf.CheckSalaryGrade";

如何创建 Hive 的 UDF?_hive_03

  • 使用 UDF 执行查询:

select ename, sal, checksalary(sal) from emp;

如何创建 Hive 的 UDF?_hive_04

  • 销毁临时函数:

drop temporary function checksalary;

如何创建 Hive 的 UDF?_udf_05


举报

相关推荐

0 条评论