IDEA创建Hive中的UDF函数,白话文讲解

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包,生成函数。

猜你喜欢

转载自blog.csdn.net/qq_36786609/article/details/84302730