Hive自定义函数、参数、脚本

1. Hive自定义函数 UDF

 自定义一个java类
 继承UDF类
 约定俗成的重写evaluate方法
 打包类所在项目成一个all-in-one的jar包并上传到hive所在机器
 在hive中执行add jar操作,将jar加载到classpath中。
 在hive中创建模板函数,使得后边可以使用该函数名称调用实际的udf函数
 hive sql中像调用系统函数一样使用udf函数

1.rz -bye 2.hdfs dfs -put 3.add jar hdfs:/// 4.create temporary function name as ‘com.tl.job019…’
5.select name(‘123456’,2,’***’);

2.UDAF

  • in:out=n:1,即输入N条数据,返回一条处理结果,即列转行。
  • 最常见的系统聚合函数,如count,sum,avg,max等

 自定义一个java类
 继承UDAF类
 内部定义一个静态类,实现UDAFEvaluator接口
 实现方法init,iterate,terminatePartial,merge,terminate共5个方法.

在这里插入图片描述

3.UDTF

• 解决一行输入多行输出,即1:n,即行转列应用
• 往往被lateral view explode+udf等替代实现,比直接用udtf会更简单、直接、更灵活一些

4.hive参数

mapjoin
由原来reduce端,改成由纯map端进行关联查找
减少了reduce的处理,减少了数据移动,提升了IO和计算效率
hive已经默认开启
应用场景:大数据块join小数据块的时候

数据倾斜
假倾斜:实际数据并没有倾斜,而是由于人为代码原因导致的倾斜
真倾斜:
极少数VIP帐号对应数据量极多,而正常帐号较少。分而治之,将倾斜的数据分类
硬件配置不均衡导致的计算能力倾斜问题。

5.shell脚本

创建hive_shell
#!/bin/sh
db=“job017”
table_name="practice_set "
hive -e "
use $db;
set tez.queue.name=oncourse;
select count(1) from $table_name;
"

执行
sh hive_shell.sh

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值