hive 用户自定义函数udf,udaf,udtf

udf:一对一的关系

udtf:一对多的关系

udaf:多对一的关系

使用Java实现步骤

自定义编写UDF函数注意:

1.需要继承org.apache.hadoop.hive.ql.exec.UDF

2.需要实现evaluete函数

编写UDTF函数注意:

1.需要继承org.apache.hadoop.hive.ql.udf.generic.GenericUDTF

2.实现 initialize, process, close三个方法

1.自定义实现一个大小写转换的函数(UDF)

执行mvn命令

将jar包上传到服务器上

上传之后,进入hive,添加jar包

add jar // /xxx.jar(jar包全路径)

创建临时函数

create temporary function upper_func as 'org.example.Uppercase';

之后,可以直接在查询中使用

transform方式

hive中除了使用Java编写udf,还可以使用transform,支持多种语言

例如: 将表第一列与第二列用 _ (下划线) 连接

1.Linux中的 awk

创建一个transform.awk

内容

bash 复制代码
{
	print $1"_"$2
}

在hive中使用add file 添加 transform.awk

然后就可以调用函数了

select transform(col1,col2) using "awk -f transform.awk" as (uu) from test_table limit 10;

2.使用python

在hive中使用 add file 添加 transform.py

使用命令调用函数

select transform(col1,col2) using "python transform.py" as (uu) from test_table limit 10;

3.基于python实现wordcount

整个过程模拟map 和 reduce

add file 上传 mapper.pyreduce.py

创建一张表,保存结果

bash 复制代码
create table word_cnt(
word string , 
cnt int)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t';
bash 复制代码
WITH map_cnt as  (
select transform(line) using "python mapper.py" as  word , cnt 
from docs  
cluster by word ),

insert  overwrite table word_cnt 
select transform(word,cnt) using "python reduce.py" as w, c  
from map_cnt 
相关推荐
派可数据BI可视化12 小时前
一文读懂系列:数据仓库为什么分层,分几层?数仓建模方法有哪些
大数据·数据仓库·信息可视化·spark·商业智能bi
Light6012 小时前
不止于名:领码 SPARK 如何“链”动数据仓库、数据湖、中台与湖仓一体新纪元
大数据·数据仓库·数据湖·ipaas·湖仓一体·数据中台·领码 spark
郑小憨12 小时前
FlinkSQL窗口函数TUMBLE、SESSION 和 HOP的区别
大数据·数据仓库·sql·flink·database
码字的字节12 小时前
锚点模型:数据仓库中的高度可扩展建模技术详解
大数据·数据仓库·spark
Agentic AI人工智能与大数据12 小时前
大数据领域数据仓库的ETL任务优化
大数据·数据仓库·ai·etl
AI架构全栈开发实战笔记12 小时前
AI应用架构师教你:如何用AI自动化数据仓库的测试?
数据仓库·人工智能·ai·自动化
AI软件工程实践12 小时前
解读大数据领域数据仓库的事实表设计
大数据·数据仓库·ai
数据知道19 小时前
PostgreSQL:详解 PostgreSQL 与Hadoop与Spark的集成
hadoop·postgresql·spark
Francek Chen21 小时前
【大数据存储与管理】分布式文件系统HDFS:03 HDFS的相关概念
大数据·hadoop·分布式·hdfs
Timer_Cooker2 天前
Hive Sum(null)编译报错分析
数据仓库·hive·hadoop