大数据技术架构(组件)8——Hive:Function Cases UDF/UDTF/UDAF 1

news2024/11/27 13:46:29

1.3、Function Cases

1.3.1、窗口函数

row_number:使用频率 ★★★★★

rank :使用频率 ★★★★

dense_rank:使用频率 ★★★★

rank/dense_rank/row_number对比

first_value:使用频率 ★★★

last_value:使用频率 ★

lead:使用频率 ★★

lag:使用频率 ★★

1.3.2、集合相关

collect_set:使用频率 ★★★★★

collect_list:使用频率 ★★★★★

sort_array:使用频率 ★★★

1.3.3、URL相关

parse_url:使用频率 ★★★★

reflect:使用频率 ★★

1.3.4、JSON相关

get_json_object:使用频率 ★★★★★

1.3.5、列转行相关

explode:使用频率 ★★★★★

1.3.6、Cube相关

GROUPING SETS:使用频率 ★

1.3.7、字符相关

concat:使用频率 ★★★★★

concat_ws:使用频率 ★★★★★

instr:使用频率 ★★★★

length:使用频率 ★★★★★

size:使用频率 ★★★★★

trim:使用频率 ★★★★★

regexp_replace:使用频率 ★★★★★

regexp_extract:使用频率 ★★★★

substring_index:使用频率 ★★

1.3.8、条件判断

if:使用频率 ★★★★★

case when :使用频率 ★★★★★

coalesce:使用频率 ★★★★★

1.3.9、数值相关

round:使用频率 ★★

ceil:使用频率 ★★★

floor:使用频率 ★★★

hex:使用频率 ★

1.3.10、时间相关(比较简单)

from_unxitime:使用频率 ★★★★★

unix_timestamp:使用频率 ★★★★★

to_date:使用频率 ★★★★★

year:使用频率 ★★★★★

month:使用频率 ★★★★★

day:使用频率 ★★★★★

date_add:使用频率 ★★★★★

date_sub:使用频率 ★★★★★

1.4、UDF/UDTF/UDAF

UDF:用户自定义函数

主要功能:一对一输入输出,如substr,date_add,instr,size等。

public final class Lower extends UDF {
    public Text evaluate(final Text s) {
        if (s == null) { return null; }
        return new Text(s.tostring().toLowerCase());
    }
}

UDTF:拆解函数

主要功能:一对多输入输出,如explode,array,json_tuple等

限制(可以使用lateral view 替代):

1、Select语句中不允许使用其他的表达式

2、不能嵌套,如explode(explode(adid_list))

3、不支持GROUP BY / CLUSTER BY / DISTRIBUTE BY / SORT BY

自定义:

public class GenericUDTFCount2 extends GenericUDTF {
    Integer count = Integer .value0f(e);
    Object forwardobjl] = new Object[1];
    @Override
    public void close() throws HiveException {
        forwardobj[0] = count;
        forward(forwardObj);
        forward(forwardObi);
    }

    @Override
    public StructObjectInspector initialize(ObjectInspector[] argOIs) throWs UDFArgumentException {
        ArrayList<String> fieldNames = new ArrayList<string>();
    ArrayList<ObjectInspector> fieldOIs = new ArrayList<ObjectInspector>();fieldNames .add("col1");
fieldoIs.add(Primitive0bjectInspectorFactory.javaIntObjectInspector);return ObjectInspectorFactory.getStandardstructObjectInspector(fieldNames,fieldoIs);
@Override
public void process(Object[] args) throws HiveException {count = Integer .valueof(count.intValue() + 1);

UDAF:聚合函数

主要功能:sum,avg,min,max,collect_set

自定义函数:参考org.apache.hadoop.hive.ql.udf.generic.GenericUDAFMax

源码测试用例: ql/src/test/queries/clientpositive

1.4.1、函数帮助

注意:Hive中所有的关键词都是忽略大小写的。无论是通过Beeline还是CLI模式,都可以通过以下命令来查看Hive 函数

注意点:当hive.cache.expr.evaluation参数设置为true的时候(当然默认值就是true),在0.12.0、0.13.0和0.13.1版本中,使用UDF嵌套到其他UDF函数中可能会有问题。具体可以见HIVE-7314

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/180626.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

下班前几分钟,我彻底弄懂了并查集

目录一、并查集的由来二、代表元法2.1 初始化2.2 查询2.3 合并2.4 设计理念三、并查集的应用3.1 合并集合3.2 连通块中点的数量3.3 亲戚3.4 省份数量References一、并查集的由来 考虑这样一个场景。 现有 nnn 个元素&#xff0c;编号分别为 1,2,⋯,n1,2,\cdots,n1,2,⋯,n&…

【JVM】详解直接内存

文章目录1. 直接内存概述2. 直接内存的使用2.1 Java缓冲区2.2 直接内存3. 直接内存的释放3.1 直接内存释放原理4. 禁用显式回收对直接内存的影响1. 直接内存概述 下面是 《深入理解 Java 虚拟机 第三版》2.2.7 小节 关于 Java 直接内存的描述。 直接内存&#xff08;Direct Me…

从零开始的数模(七)层次分析法

一、概念 1.1定义 应用场景&#xff1a; 1、最佳方案选取 2、评价类问题 3、指标体系的优选 步骤&#xff1a; 1、建立层次结构模型&#xff1b; 2、构造判断(成对比较)矩阵&#xff1b; 3、层次单排序及其一致性检验&#xff1b; 4、层次总排序及其一致性检验&#xff1b; …

Mybatis 分页插件使用

1、分页插件的使用步骤 需求分析&#xff1a; 我们在前端界面获取用户表的时候&#xff0c;在界面上一次显示出成百上千条数据&#xff0c;用户体验&#xff0c;软件性能都会很糟糕&#xff0c;假设数据库内存储十万条记录&#xff0c;后端一次性返回这么多数据&#xff0c;前…

C语言深度解剖-关键字(2)

目录 1.关键字 static 源文件与头文件 static修饰全局变量 static修饰局部变量 写在最后&#xff1a; 1.关键字 static 源文件与头文件 平时我们在练习的时候&#xff0c;都只会开一个用来测试的源文件&#xff0c; 但是&#xff0c;当我们在写一个项目的时候&#xff…

Hal GPIO控制--LED/Delay实现

环境配置在CubeMx Pinout view 中点击可以设置管脚模式 &#xff0c;右击 可以配置管脚名称这里以点PB8灯为例&#xff0c;可以设置灯输出电平 &#xff0c;模式为输出&#xff0c;不进行上下拉&#xff0c; 速度 模式设置以及用户自定义名称。。时钟树配置&#xff0c;使用HSI…

FreeRTOS源码获取-->FreeRTOS移植-->FreeRTOS源码文件了解 | FreeRTOS二

目录 说明&#xff1a; 一、获取源码 1.1、FreeRTOS官网获取 1.2、正点原子开发板A盘资料\6&#xff0c;软件资料\13&#xff0c;版本-->V10.4.6 二、移植源码 2.1、移植步骤 2.1.1、添加源码、头文件路径 2.1.2、添加FreeRTOSConfig.h文件路径 2.1.3、添加或修改相…

VisualSVN Server Enterprise 5.1.1 Crack

VisualSVN Server 提供以下主要功能。 Active Directory 单点登录 允许用户使用他们当前的 Active Directory 域凭据访问 VisualSVN Server。使用安全 Kerberos V5 或 NTLM 身份验证协议。支持双因素身份验证和智能卡。 多站点存储库复制 使用 VisualSVN 分布式文件系统 (VDF…

MySQL基础(1)—— 卸载与安装

文章目录MySQL卸载【windows】1、停止MySQL服务2、软件的卸载2.1 通过控制面板卸载软件2.2 通过360软件管家等第三方软件进行删除2.3 通过MySQL安装包提供的卸载功能卸载3、残余文件的清理4、清理注册表5、删除环境变量配置MySQL安装【windows】1、下载安装包2、安装3、配置环境…

Sharding-JDBC(六)5.1.0版本,实现按月分表、自动建表、自动刷新节点

目录1.Maven 依赖2.创建表结构3.yml 配置4.TimeShardingAlgorithm.java 分片算法类5.ShardingAlgorithmTool.java 分片工具类6.ShardingTablesLoadRunner.java 初始化缓存类7.SpringUtil.java Spring工具类8.源码测试9.测试结果10.代码地址背景&#xff1a; 项目用户数据库表量…

vscode运行C/C++程序

一、vsocde对C/C的支持 Visual Studio Code对C/C语言的支持由Microsoft C/C扩展程序提供。它使得C/C在Windows、Linux和macOS等跨平台开发成为可能。 二、安装扩展程序 打开VS Code软件选择任务栏上的扩展视图图标&#xff08;下图红色方框&#xff09;或使用快捷键(CtrlShif…

【自然语言处理】情感分析(四):基于 Tokenizer 和 Word2Vec 的 CNN 实现

情感分析&#xff08;四&#xff09;&#xff1a;基于 Tokenizer 和 Word2Vec 的 CNN 实现本文是 情感分析 系列的第 444 篇&#xff0c;前三篇分别是&#xff1a; 【自然语言处理】情感分析&#xff08;一&#xff09;&#xff1a;基于 NLTK 的 Naive Bayes 实现【自然语言处…

服务发现Discovery和Eureka自我保护机制

目录 一、服务发现Discovery ​二、Eureka自我保护 &#xff08;一&#xff09;故障现象 &#xff08;二&#xff09;导致原因 &#xff08;三&#xff09;怎么禁止自我保护 三、Eureka2.0的停更 一、服务发现Discovery 对于注册进eureka里面的微服务&#xff0c;可以通…

外挂、破解软件理论与实战

外挂、破解软件理论与实战 1 理论 1.1 不同操作系统下的可执行文件 Windows【PE】 PE 格式&#xff0c;可移植可执行格式&#xff08;Portable Executable&#xff09;&#xff0c; 是 Windows 下的主要可执行文件格式。别被名字迷惑了&#xff0c;PE 文件必须是 Windows 下…

第四十六章 动态规划——状态机模型

第四十六章 动态规划——状态机模型一、通俗理解状态机DP1、什么是状态机2、什么是状态机DP二、例题1、AcWing 1049. 大盗阿福&#xff08;1&#xff09;问题&#xff08;2&#xff09;分析a.状态定义b.状态转移c.循环设计d.初末状态&#xff08;3&#xff09;代码2、AcWing 10…

C++学习/温习:新型源码学编程(三)

写在前面(祝各位新春大吉&#xff01;兔年如意&#xff01;) 【本文持续更新中】面向初学者撰写专栏&#xff0c;个人原创的学习C/C笔记&#xff08;干货&#xff09;所作源代码输出内容为中文&#xff0c;便于理解如有错误之处请各位读者指正请读者评论回复、参与投票&#xf…

01 课程简介、HTML标签【尚硅谷JavaWeb教程】

1. 课程体系设计 2. HTML标签 服务器—浏览器&#xff08;字符串"" &#xff09; demo01.html 1&#xff09;html语言是解释型语言&#xff0c;不是编译型 浏览器是容错的 2&#xff09;html页面中由一对标签组成&#xff1a; < html>称为 开始标签 < /htm…

Java基础语法——数组概念、数组内存图解(一个数组、二个数组)及二元数组的应用

目录 数组概述 数组定义格式 数组概念 数组的定义格式 数组的初始化 数组初始化概述 数组的初始化方式 Java中的内存分配 Java中一个数组的内存图解 Java中二个数组的内存图解 两个数组指向同一个地址的内存图解 数组操作中两个常见的小问题 二维数组 二维数组概述…

c++11 标准模板(STL)(std::forward_list)(十一)

定义于头文件 <forward_list> template< class T, class Allocator std::allocator<T> > class forward_list;(1)(C11 起)namespace pmr { template <class T> using forward_list std::forward_list<T, std::pmr::polymorphic_…

前端架构处理Cookie、Session、Token

1. Cookie Cookie 总是保存在客户端中。按在客户端中的存储位置&#xff0c;可分为内存 Cookie 和硬盘 Cookie。 内存 Cookie 由浏览器维护&#xff0c;保存在内存中&#xff0c;浏览器关闭后就消失了&#xff0c;其存在时间是短暂的。硬盘 Cookie 保存在硬盘里&#xff0c;…