Hive 自定义函数

这篇具有很好参考价值的文章主要介绍了Hive 自定义函数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

导读

大家好,我是数据开发者,非常感谢大家最近的关注,你们的关注是我持续输出的动力,让我们共同提高。

大数据平台下的数据仓库搭建过程中存在许多个性化的业务需求,或者说是系统需求,无法在 Hive 提供的内置函数中找到解决办法,为了解决这个问题,我们可以使用 Hive 自定义函数满足这种个性化需求。我们本篇就使用 Hive 中的自定义函数实现几种数仓搭建过程中的需求。

Hive 有哪些自定义函数?

Hive 中存在三种类型的函数,分别是 UDF, UDAF, UDTF,这三种类型的 UDF 分别是:

UDF(user defined function):用户自定义函数,操作单行数据,并产生单行数据,也就通常理解的单进单出,与 concat,nvl 等类似; UDAF(user defined aggregation function):用户自定义聚合函数,操作多行数据,并产生单条数据,与常见的 sum,count 函数类似,也可以理解为多进一出; UDTF(user defined table-generating function):用户自定义表生成函数,操作单行数据,并产生多行输出,可以理解为一进多出,类似于 Hive 内置的 explode 函数。

以上三种类型的函数对我们理解数据开发过程有很大帮助,无论是关系型数据库,还是大数据平台的数据开发,这三种类型分别代表了三种数据处理方式,可以映射到数据仓库开发过程中的 ETL 过程,为了更好的理解这三种自定义函数,我们需要使用 Java 开发自定义函数。

开发环境准备

本次代码可以通过代码包的方式发送给大家参考学习,大家可以关注公众号后发送 udf 获取代码包。

1,JDK 1.8.0
2,Eclipse 2022-06 (4.24.0)
2,Maven 3.8.1
3,Hive 3.1.2

除了以上软件的准备之外,我们还需要准备一张表,这张表结构如下:

字段名称 字段类型 业务含义
id int 代理键
name string 姓名
order_dte string 订单日期
formula string 计算公式

根据上面的表结构准备测试样例数据,样例数据如下所示:

create table udf_exmaple(
id int,
name string,
order_dte string,
formula string
)
comment 'udf example'
stored as parquet;
OK
Time taken: 0.405 seconds

select id,name,order_dte, formula from udf_example;

id name order_dte formula
4029 udf_test4029 2021-12-12 1*3*2000/4029
4028 udf_test4028 2021-12-11 1*3*2000/4028
4027 udf_test4027 2021-12-10 1*3*2000/4027
4026 udf_test4026 2021-12-09 1*3*2000/4026
4025 udf_test4025 2021-12-08 1*3*2000/4025

UDF 开发过程

为了能够掌握 Hive UDF 的开发, 我们设定如下需求:

  • 通过 UDF 实现 eval() 公式,该函数可以完成字符串公式的计算,比如 eval(4/2) = 2.0;

1),首先通过终端控制台进入项目创建目录,通过下面的 maven archetype 创建 maven 项目,也可以通过 eclipse 创建项目向导创建 maven 项目。

mvn archetype:generate \
-DgroupId=com.data.developer \   
-DartifactId=UDF \
-DpackageName=com.data.developer.udf \
-Dversion=1.0 \
-DinteractiveMode=false \

2),打开 eclipse 开发工具,并导入第一步创建的 Maven 项目;

Hive 自定义函数
导入 Maven 项目

3),UDF 项目 POM 内容如下,其中依赖项中的 元素的作用是控制依赖元素的使用范围。通俗的将,就是控制 Jar 包在哪些范围被加载和使用。包括编译,测试,运行,并且还可以加上是否被打入包中。常见的作用域范围有: compile, test, provided, runtime, system, import。默认值是 compile,是比较强的依赖,适用于所有阶段,意味着依赖会被打包,随着项目一起发布,在编译,测试,运行都有效。我们这里对其中一个依赖包使用了编译范围,其余 Hive 相关依赖包在运行环境不需要,就使用了 provided 范围,所以运行时 provided 范围的依赖不会被打包。 文章来源地址https://www.toymoban.com/news/detail-408073.html


到了这里,关于Hive 自定义函数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Hive自定义函数

        本文章主要分享单行函数UDF(一进一出) 现在前面大体总结,后边文章详细介绍 自定义函数分为临时函数与永久函数 需要创建Java项目,导入hive依赖 创建类继承  GenericUDF(自定义函数的抽象类) (实现函数) 打成jar包,传到服务器上 将jar包添加到hive的class path上临时

    2024年02月16日
    浏览(32)
  • FlashDuty Changelog 2023-09-21 | 自定义字段和开发者中心

    FlashDuty:一站式告警响应平台,前往此地址免费体验! FlashDuty 已支持接入大部分常见的告警系统,我们将推送内容中的大部分信息放到了 Lables 进行展示。尽管如此,我们用户还是会有一些扩展或定制性的需求,比如人工标记一个故障是否为误报。因此我们提供了 自定义字

    2024年02月08日
    浏览(34)
  • 🔥🔥Java开发者的Python快速进修指南:自定义模块及常用模块

    好的,按照我们平常的惯例,我先来讲一下今天这节课的内容,以及Java和Python在某些方面的相似之处。Python使用import语句来导入包,而Java也是如此。然而,两者之间的区别在于Python没有类路径的概念,它直接使用.py文件的文件名作为导入路径,并将其余的工作交给Python解释

    2024年02月05日
    浏览(57)
  • Hive UDF自定义函数上线速记

    待补充 1.1 提交jar包至hdfs 使用命令or webui 上传jar到hdfs,命令的话格式如下 hdfs dfs -put [Linux目录] [hdfs目录] 示例: 1.2 将 JAR 文件添加到 Hive 中 注意hdfs路径前面要加上 hdfs://namenode , 如果是hdfs集群的话换成 dfs.nameservices 的值 1.3 注册永久 UDF 函数 hdfs://namenode 和1.2步骤保持一致 CR

    2024年02月11日
    浏览(32)
  • 🔥🔥Java开发者的Python快速进修指南:函数基础

    话不多说,今天我们要介绍的是函数。本系列文章追求短而精,今天我们将重点讨论函数以及与Java方法的区别。与Java方法不同,函数不需要像Java方法一样讲究修饰符等其他特性,它只需要使用\\\"def\\\"进行声明。另外,函数的参数也与Java方法有所不同,Java方法中不存在默

    2024年02月05日
    浏览(50)
  • 🔥🔥Java开发者的Python快速进修指南:函数进阶

    在上一篇文章中,我们讲解了函数最基础常见的用法,今天我想在这里简单地谈一下函数的其他用法。尽管这些用法可能不是非常常见,但我认为它们仍然值得介绍。因此,我将单独为它们开设一个章节,并探讨匿名函数和装饰器函数这两种特殊的用法。 在Python中,匿名函数

    2024年02月05日
    浏览(39)
  • 【大数据Hive3.x数仓开发】窗口函数案例:连续N次登录的用户;级联累加求和;分组TopN

    对窗口函数的讲解part见:【大数据Hive3.x数仓开发】函数–窗口函数 自连接过滤实现 连续两天登陆的用户ID: 窗口函数lead()实现 功能:用于从当前数据中基于当前行的数据向后偏移取值 语法: lead(colName,N,defautValue) colName:取哪一列的值 N:向后偏移N行 defaultValue:如果取不到返回

    2023年04月17日
    浏览(25)
  • Hive数据定义(1)

            hive数据定义是hive的基础知识,所包含的知识点有: 数据仓库的创建、数据仓库的查询、数据仓库的修改、数据仓库的删除、表的创建、表的删除、内部表、外部表、分区表、桶表、表的修改、视图。 本篇文章先介绍:数据仓库的创建、数据仓库的查询、数据仓

    2024年01月16日
    浏览(30)
  • Hive数据定义(2)

             hive数据定义是hive的基础知识,所包含的知识点有: 数据仓库的创建、数据仓库的查询、数据仓库的修改、数据仓库的删除、表的创建、表的删除、内部表、外部表、分区表、桶表、表的修改、视图。 在上一篇文章中介绍了一部分知识点,在本篇文章中将阐述剩

    2024年01月18日
    浏览(25)
  • 【大数据之Hive】十六、Hive-HQL函数之窗口函数(开窗函数)

      先定义了窗口的大小(按行来算),然后对窗口内的行的数据进行计算,再将计算结果返回给改行。   窗口函数包括窗口和函数两部分,窗口用于定义计算范围,函数用于定义计算逻辑,窗口函数只会在原来的表上增加一列结果列,不改变原来的数据。 函数:   绝

    2024年02月11日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包