hive 之函数分类(面试必会加分项)

就这么说吧,如果面试官问你,在你的项目开发中,一般会遇到什么函数呢?

emmmm,你脑瓜子是不是有点紊乱,空有一肚子墨水却不能系统的输出?

好像你都会,但面试官没有看出你的态度,你无敌的态度,与别具一格的理解力与知识的框架性!!!

怎么回答,让自己加大筹码,占据谈薪高点;让面试官自愧不如,跪下给你唱征服呢。

仔细感受:

A 先按照这种函数的3大分类,递进阐述遇到了什么函数

这里是按照数据记录数的量的变化来分类:普通函数,聚合函数,表生成函数。

1,普通函数

UDF函数就是数据记录数量不变,输入一行输出也是一行。

普通函数有哪些呢?咱们可以再进行归纳,举例子:

1.1,字符串函数:

substr,concat, cast , LPAD , regexp_replace,  regexp_extract, get_json_object,  if, nvl 等等。

1.2,日期函数:

日期与时间戳的转化  unix_timestamp, from_unixtime 

日期的计算   date_sub, date_add, datediff

1.3,开窗函数:

1.3.1,聚合类开窗函数:

max()over() , min()over() , sum()over() , avg()over() , count()over()

1.3.2,  排序类开窗函数:

row_number()over() ,  rank()over() ,  dense_rank()over() 

注意:排序类开窗函数必须加上 order  by

1.3.3, 偏移类开窗函数

lead()over() ,  lag()over() 

注意:偏移类开窗函数必须加上 order  by

2, UDAF 聚合函数

UDAF是多行记录变一行,那必然是要按照什么粒度(group by)来进行聚合统计汇总的。

聚合函数有哪些呢?再进行分类:

2.1, 普通聚合函数

sum,min,max,avg,count    +  group by 

2.2, 复杂聚合函数

collect_set  (去重)  +  group by 

collect_list  (不去重) +  group by 

concat_group  +  group by 

3, UDTF 表生成函数

表生成函数有哪些呢?再进行分类:

3.1,  explode函数/posexplode函数

首选当然是explode函数了,它可以把一条array数组,map给炸开,变多条记录。

想了解此高阶函数的用法可以查看下面这个这篇文章。

hive 之 UDTF 之 explode 函数 和 lateral view 侧视图(原理)-CSDN博客

如果想了解此高阶函数在项目业务中的应用场景,大家可以继续阅读下面这篇文章。

lateral view explode (split(column,‘exp’)) 爆炸函数-CSDN博客

3.2,inline函数

这个后续会给大家去分享。

3.3,用户自定义函数

其次,你要是实力强悍,可以像一些大厂一样,自己开发出一套自定义函数,实现某些特定的功能。

比如说:对json字符串里的某个元素中的特定数据,给炸开提取出来。

再比如说,开发出一个函数:可以对手机号进行加密,并且可以对手机号进行非空判断,位数判断,对符合校验规则的手机号进行加密处理,不符合的数据直接返回不处理。

当然,当大家看完上述内容,可能觉得说那行列转换相关的函数呢???

emmmm,行列转换函数那是 sum/max+case when 打出的一套组合拳技能,不在今天的范畴之内,下次也会另外起一个专题讲述。

B 再结合你在实际项目中开发的业务指标

用到什么函数,咱可以按照上面的归类,层层递进的跟面试官答出来,emmm我相信从上面这个观点切入,会让面试官耳目一新。在技术层面答成这样,已经可以从侧面反映我们的数据敏感性了。

但是还不够,咱还不够深沉,没有办法让面试官在整个职业生涯里记住我们就是咱的失败了。

我们可以在答完一些重要的函数的时候,顺便结合一下项目业务,在求什么指标的时候会用上。

业务栗子1:

咱在讲偏移类开窗函数的时候,我们可以顺便说,这个一般会在公司某某产品的同比/环比销售量的时候用得比较多,在算某app的用户连续登录天数也会涉及到。

业务栗子2:

咱在讲 排序类开窗函数的时候,我们可以顺便说,这个会在算员工的业绩的时候,需要先算出客户和员工的下挂关系,按照下挂关系的优先级来取(先将每种下挂关系 用case  when 按照优先级定义一个数字,然后对其进行排序)。

等等等。。。

当我们这样子打出一套组合拳的时候,面试官就会觉得咱思想是有架构的,逻辑是有层次的,表达是清晰的,肚子里是有墨水的,一个高薪offer就在来的路上了!!!

就完美了!!!

  • 35
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不被定义喵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值