1. 首先我们需要建立java类,如下:
package cn.infotelcom.udf;
import org.apache.hadoop.hive.ql.exec.UDF;
public class Get_sum_flow extends UDF
{
public String evaluate(String upload, String download)
{
return "";
}
}
2. 注意package的路径,在home目录下建立文件夹cn/infotelcom/udf,并将java类放到这边。
3. 建立文件夹cn/infotelcom/jar,并上传jar包hadoop-core-1.2.1.jar、hive-exec-0.7.1.jar
4. 在home目录下面执行命令javac -classpath /data2/u_lx_ctag/cn/infotelcom/jar/hadoop-core-1.2.1.jar:/data2/u_lx_ctag/cn/infotelcom/jar/hive-exec-0.7.1.jar /data2/u_lx_ctag/cn/infotelcom/udf/Get_sum_flow.java 目的:编译java文件,产生class文件,用于生成jar包
5. 在home目录下执行jar -cvf Get_sum_flow.jar cn/infotelcom/udf/Get_sum_flow.class,此命令的作用是生成jar包,jar包所在的目录是home根目录下面
6. 在hive中加载jar包:add jar /data2/u_lx_ctag/UDF_FUNCTION/Get_sum_flow.jar;【jar包的绝对路径】
7. 创建函数:CREATE TEMPORARY FUNCTION get_sum_flow AS 'cn.infotelcom.udf.Get_sum_flow';
8. 调用函数:select get_sum_flow(upload_bytes,download_bytes) from dual;
9. 大功告成啦。