HIVE 编写自定义函数UDF
一 新建JAVA项目 并添加 hive-exec-2.1.0.jar 和hadoop-common-2.7.3.jar
hive-exec-2.1.0.jar 在HIVE安装目录的lib目录下
hadoop-common-2.7.3.jar在hadoop的安装目录下的\share\hadoop\common
二 编一个一个类并继承UDF 并重写evaluate方法
下面以rownum为例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
package
com.udf;
import
org.apache.hadoop.hive.ql.exec.UDF;
import
org.apache.hadoop.io.Text;
public
class
RowNumUDF
extends
UDF{
public
static
String signature =
"_"
;
public
static
int
order =
0
;
public
int
evaluate(Text text){
if
(text !=
null
){
//分组排序的依据,列名,通常为主键
String colName = text.toString();
//处理第一条数据
if
(signature ==
"_"
){
//记下分组排序的字段:主键,并将rownum设为1
signature = colName;
order =
1
;
//返回rownum
return
order;
}
else
{
//首先比对是否和上一条主键相同
if
(signature.equals(colName)){
//rownum依次加1
order++;
return
order;
}
else
{
//如果主键改变,将rownum设为1
signature = colName;
order =
1
;
return
order;
}
}
}
else
{
//如果主键为空,则返回-1
return
-
1
;
}
}
}
|
三 导出位jar包并在HIVE中注册
引用:https://www.cnblogs.com/duking1991/p/6094730.html