(一)创建JAVA 代码--例子
package hiveOpt;
import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.io.Text;
public class splitMax extends UDF {
public static int getMax(String[] arr) {
int max = Integer.valueOf(arr[0]);
for (int i = 1; i < arr.length; i++) {
if (Integer.valueOf(arr[i]) > max) {
max = Integer.valueOf(arr[i]);
}
}
return max;
}
public Text evaluate(String mdimlr)
{
Text result = new Text();
String[] a = mdimlr.split(",");
result.set(String.valueOf(getMax(a)));
return result;
}
}
(二)上传jar到hdfs
hadoop fs -put /data/soft/splitMax.jar /tmp
(三)登录hive命令行加载jar
hive> add jar hdfs:///tmp/splitMax.jar;
hive> create temporary function splitmax as 'hiveOpt.splitMax';
hive> show funcations
hive> select splitmax(id) from wobcongfu;
( 四)测试自定义函数
select phone_num,max(myCol1)
from temp_qiu_test1
LATERAL VIEW explode(split(col1,',')) myTable1 AS myCol1
group by phone_num;