hive里的用户定义函数udf

大数据和人工智能躺过的坑 大数据和人工智能躺过的坑     2022-08-14     485

关键词:

  Hive可以通过实现用户定义函数(User-Defined Functions,UDF)进行扩展(事实上,大多数Hive功能都是通过扩展UDF实现的)。想要开发UDF程序,需要继承org.apache.hadoop.ql.exec.UDF类,并重载evaluate方法。Hive API提供@Description声明,使用声明可以在代码中添加UDF的具体信息。在Hive中可以使用DESCRIBE语句来展现这些信息。

  Hive的源码本身就是编写UDF最好的参考资料。在Hive源代码中很容易就能找到与需求功能相似的UDF实现,只需要复制过来,并加以适当的修改就可以满足需求。

 

 

下面是一个具体的UDF例子,该例子的功能是将字符串全部转化为小写字母:

package com.madhu.udf;

import org.apache.hadoop.hive.ql.exec.Desription;
import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.io.Text;

//add jar samplecode.jar;
//create temporary function to_upper as ‘com.madhu.udf.UpercaseUDF‘;
@Desription(
  name="to_upper",
  value="_FUNC_(str) -Converts a string to uppercase",
  extended="Example: " +
  " > select to_upper(producer) from videos_ex; " +
  " JOHN MCTIERNAN"
)
public class UpercaseUDF extends UDF{
  public Text evaluate(Text input){
    Text result = new Text("");
    if (input != null){
      result.set(input.toString().toUpperCase());
    }  
    return result;
  }
}

 

 

 

   UDF只有加入到Hive系统路径,并且使用唯一的函数名注册后才能在Hive中使用。UDF应该被打成JAR包。

 

 

下面的语句可以把JAR条件放入Hive系统路径,并注册相关函数:

hive > add jar samplecode.jar
Added samplecode.jar to class path
Added resource:samplecode.jar
hive> create temporary function to_upper as ‘com.madhu.udf.UppercaseUDF‘;

 

 

  现在可以在Hive中使用这个函数了:

hive > describe function to_upper;
OK
to_upper(str) -Converts a string to uppercase
Time taken:0.039 seconds,Fetched:1 row(s)
hive > describe function extended to_upper;
OK
to_upper(str) - Converts a string to uppercase
Example:
> select to_upper(producer) from videos_ex;
JOHN MCTIERNAN
Time taken:0.07 seconds,Fetched:4 row(s)

 

 

  

[hive]hive自定义函数udf

...函数无法满足你的业务处理需要时,此时就可以考虑使用用户自定义函数用户自定义函数(userdefinedfunction),针对单条记录。 编写一个UDF,需要继承UDF类,并实现evaluate()函数。在查询执行过程中,查询中对应的每个应用到这... 查看详情

hive从入门到精通8:hive自定义函数(udf)

参考技术AHive中的用户自定义函数(即UserDefinedFunction,简称UDF),是用户对一些列Hive操作进行封装以实现特定的功能的函数。比如:在Hive的UDF中,可以直接使用select语句,对查询结果按照一定的格式输出。实现一个HiveUDF需要满... 查看详情

hive如何实现自定义函数udf(代码片段)

...置函数无法满足你的业务处理需要时,此时可以考虑使用用户自定义函数UDF来满足不同的计算需求。UDF在使用上与普通的内建函数类似。2.依赖开发HiveUDF之前,我们需要引入如下依赖,里面定义了各种我们自定义UDF函数的类型:... 查看详情

hive如何实现自定义函数udf(代码片段)

...置函数无法满足你的业务处理需要时,此时可以考虑使用用户自定义函数UDF来满足不同的计算需求。UDF在使用上与普通的内建函数类似。2.依赖开发HiveUDF之前,我们需要引入如下依赖,里面定义了各种我们自定义UDF函数的类型:... 查看详情

hive学习系列四(用户自定义函数)(代码片段)

如果入参是简单的数据类型,直接继承UDF,实现一个或者多个evaluate方法。具体流程如下:1,实现大写字符转换成小写字符的UDFpackagecom.example.hive.udf;importorg.apache.hadoop.hive.ql.exec.UDF;importorg.apache.hadoop.io.Text;publicclassLowerextendsUDFpubli... 查看详情

hive自定义函数(代码片段)

...一个数据行作为输出。(数学函数,字符串函数)UDAF(用户定义聚集函数):接收多个输入数据行,并产生一个输出数据行。(count,max)二,UDF开发实例  1,开发一个Java类,继承UDF,并重载evaluate方法(手动重载)。1package... 查看详情

[hive_12]hive的自定义函数(代码片段)

...temptags的解析 1.UDF  1.1代码示例  Code   1.2用户自定义函数的使用  1.将Hive自定义函数打包并发送到/soft/hive/lib下  2.重启Hive  3.注册函数#永久函数  createfunctionmyudfas‘com.share.udf.MyUDF‘;#临时函数  createte... 查看详情

hive自定义函数udfudafudtf

UDF:用户定义(普通)函数,只对单行数值产生作用;继承UDF类,添加方法 evaluate()/***@function自定义UDF统计最小值*@authorJohn**/publicclassMinextendsUDF{publicDoubleevaluate(Doublea,Doubleb){if(a==null)a=0.0;if(b==null)b=0.0;if(a>=b) 查看详情

hive自定义udf函数

...经满足不了我们要查询的要求,这时候可以自己写一些自定义函数来处理。自定义函数(userdefinedfunction=UDF)由于hive本身是用java语言开发,所以udf必须用java来写才可以。Hive中有三种UDF编写UDF必须满足一下:下面展示如何编写一... 查看详情

hive自定义udf函数,步骤详解

...法,而且方法名必须是evaluate。编写一个UDF,关键在于自定义Java类需要继承UDF类并实现evaluate()函数。因为在hive客户端执行查询时,对于每行输入都会调用evaluate()函数,evaluate()函数处理后的值会返回给hive。在hive客户端,将xxxHiv... 查看详情

hive自定义函数udfudtfudaf(代码片段)

Hive自定义函数UDFUDTFUDAF1.UDF:用户定义(普通)函数,只对单行数值产生作用;UDF只能实现一进一出的操作。定义udf计算两个数最小值publicclassMinextendsUDFpublicDoubleevaluate(Doublea,Doubleb)if(a==null)a=0.0;if(b==null)b=0.0;if(a>=b)returnb;elser 查看详情

hive开发自定义函数udf

参考技术AHive的UDF开发只需要重构UDF类的evaluate函数即可1.helloworld为临时的函数,所以每次进入hive都需要addjar以及createtemporary操作2.UDF只能实现一进一出的操作,如果需要实现多进一出,则需要实现UDAF 查看详情

hive自定义函数(udf)

1.解压hive的压缩包2.新建java项目,将hive压缩包里面lib文件夹的jar包导入新建的项目 3.编写java程序packageudfdemo;importorg.apache.hadoop.hive.ql.exec.UDF;publicclassToLowerextendsUDF{publicStringevaluate(Stringfield){returnfield.to 查看详情

学习笔记hive——自定义函数(代码片段)

一、自定义函数简介1.1、函数类型UDF:用户定义函数UDF操作作用于单个数据行,并且产生一个数据行作为输出。大多数函数都属于这一类(比如数学函数和字符串函数)UDAF:用户定义聚集函数UDAF接受多个输入... 查看详情

hive自定义函数udf和udtf

UDF(userdefinedfunctions)用于处理单行数据,并生成单个数据行。PS:l一个普通UDF必须继承自“org.apache.hadoop.hive.ql.exec.UDF”。l一个普通UDF必须至少实现一个evaluate()方法,evaluate函数支持重载。主要步骤如下:步骤1把以上程序打包成AddD... 查看详情

hive中如何添加自定义udf函数以及oozie中使用hive的自定义函数(代码片段)

...emporaryfunctionmyexpas‘com.gw.hive.udf.udtf.ExplodeEx‘;第一行为自定义jar包存放的路径 查看详情

如何在 Hive 中重新加载更新的自定义 UDF 函数?

】如何在Hive中重新加载更新的自定义UDF函数?【英文标题】:HowtoreloadtheupdatedcustomUDFfunctioninHive?【发布时间】:2019-12-0209:05:26【问题描述】:我用java编写了一个自定义UDF,并打包在一个jar文件中。然后,我将其添加到Hive中:cre... 查看详情

hive函数(udf篇)(代码片段)

...于select语句,对查询结构做格式化处理输出内容。自定义UDF需要继承org.apache.hadoop.hive.ql.UDF,实现evaluate函数。自定义udf函数步骤: 1.继承UDF类 2.重写evaluate方法 3.把项目打成jar包 4.hive中执行命令addjar/home/jrjt/dwetl/PUB/UDF/u... 查看详情