hive自定义函数
Hive自定义函数(UDF)
Hive自定义函数(User-Defined Function, UDF)允许用户扩展HiveQL的功能,处理内置函数无法满足的场景。UDF分为三类:
- 普通UDF:单行输入,单行输出(如字符串处理)
- UDAF(聚合函数):多行输入,单行输出(如自定义聚合统计)
- UDTF(表生成函数):单行输入,多行输出(如数据炸裂)
创建步骤(以Java为例)
-
继承Hive UDF类
import org.apache.hadoop.hive.ql.exec.UDF; import org.apache.hadoop.io.Text;public class MyUDF extends UDF {public Text evaluate(Text input) {if (input == null) return null;return new Text(input.toString().toUpperCase()); // 示例:转大写} } -
编译打包
javac -cp hive-exec-*.jar MyUDF.java jar cf myudf.jar MyUDF.class -
Hive中注册使用
ADD JAR /path/to/myudf.jar; CREATE TEMPORARY FUNCTION my_upper AS 'MyUDF'; SELECT my_upper(name) FROM employees; -- 调用自定义函数
关键注意事项
- 数据类型映射:Java类型需匹配Hive类型(如
Text对应STRING) - 异常处理:需处理
null输入避免运行时错误 - 性能优化:避免在UDF中创建大量对象,推荐重用对象
1、将字母变大写案例(将所有首字母变大写)
创建Maven项目:MyFunction
在pom.xml,加入以下maven的依赖包
