1.UDF函数创建步骤
1.要编写一个java类继承UDF这个类。
2.重写evaluate()方法。
3.使用maven打包。
1.打包步骤
2.点击install 在点击clean 再点击package完成打包。
4、将jar包上传并添加到hive
hive (default)> add jar /tmp/data/hive-train-1.0.jar;
1
5、创建模板函数
hive (default)>CREATE TEMPORARY FUNCTION 任意函数名(例:test) AS ‘自定义函数的包名’(例:com.oracle.zbx.demo1);
样例:CREATE TEMPORARY FUNCTION s1 AS ‘com.oracle.zbx.demo1’;
6、hql使用UDF
select test(tablename) from stu_1;
结果样例:
Hello:producttype
Hello:productname
Hello:productname
Hello:productname
Hello:productname
Hello:productname
Hello:productname
Hello:productname
Hello:assumintrate
Hello:chargeitemlevelcode
Hello:costitemcode
Hello:sex
Hello:dangercerttypecode
Hello:costitemcode
Hello:sex
Hello:dangercerttypecode
Hello:currency
Hello:claimno
Hello:receiptno
Hello:receiptno
Hello:receiptmedicaltype
Hello:insurancetype
Hello:hospitalnature
Hello:inhospitaldate
Hello:inhospitaldate
Hello:gpflag
Hello:currency
Hello:certtype
Hello:productcode
Hello:applicationformno
Hello:insuredname
Hello:hospitalname
Hello:grppolicyno
Hello:appntname
Hello:mainproductflag
Hello:annstartwithdwldate
Hello:paymode
Hello:paymode
Hello:payterm
Hello:finalpaydate
Hello:penstartwithdwldate
Hello:accumpremium
Hello:accountdate
Hello:certstartdate
Hello:certstartdate
Hello:enteraccdate
Hello:withdrawaltodate
Hello:enteraccdate
Hello:salary
Hello:height
Hello:weight
Hello:feeamount
Hello:suspenddate
Hello:effdate
Hello:terminationdate
Hello:paybegindate
Hello:busilicensesdate
7.pom 配置
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
<properties>
<project.build.sourceEncoding>UTF8</project.build.sourceEncoding>
<!--Hadoop版本更改成自己的版本-->
<hadoop.version>2.7.5</hadoop.version>
<hive.version>2.1.1</hive.version>
</properties>
<dependencies>
<!--添加hadoop依赖-->
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>${hadoop.version}</version>
</dependency>
<!--添加hive依赖-->
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-exec</artifactId>
<version>${hive.version}</version>
</dependency>
</dependencies>
Apache Hadoop Apache Hadoop https://repo1.maven.org/maven2/
cloudera cloudera https://repository.cloudera.com/artifactory/cloudera-repos/
8.代码样例
import org.apache.hadoop.hive.ql.exec.Description;
import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.io.Text;
public class demo1 extends UDF{
//重写evaluate方法
public Text evaluate(Text input){
return new Text(“Hello:”+input.toString().toLowerCase());
}
public static void main(String[] args) {
demo1 UDF=new demo1();
System.out.print(UDF.evaluate(new Text(“HHH”)));//将字段值都整成小写
}
}
9.每次重启hive后,之前的函数不能正常使用,需要重新增加jar包,生成函数。