面试题 01 窗口函数(开窗函数)
OVER()
:用于指定分析函数工作时的数据窗口大小,这个数据窗口大小可能会随着行的变而变化;
CURRENT ROW
:当前行;
n PRECEDING
:往前n行数据;
n FOLLOWING
:往后n行数据;
UNBOUNDED
:起点,UNBOUNDED PRECEDING 表示从前面的起点
UNBOUNDED FOLLOWING
表示到后面的终点;
LAG(col,n,default_val)
:往前第n行数据;
LEAD(col,n, default_val)
:往后第n行数据;
NTILE(n)
:把有序分区中的行分发到指定数据的组中,各个组有编号,编号从1开始,对于每一行,NTILE返回此行所属的组的编号。这个函数需要注意:n必须为int类型。
面试题 02 行转列函数
CONCAT(string A/col, string B/col…)
:返回输入字符串连接后的结果,支持任意个输入字符串。
例如:concat( aa, ‘:’, bb) 就相当于把aa列和bb列用冒号连接起来了,aa:bb。
CONCAT_WS(separator, str1, str2,…)
:CONCAT_WS() 代表 CONCAT With Separator ,是CONCAT()的特殊形式。第一个参数是其它参数的分隔符。分隔符的位置放在要连接的两个字符串之间。分隔符可以是一个字符串,也可以是其它参数。如果分隔符为 NULL,则结果为 NULL。函数会忽略任何分隔符参数后的 NULL 值。但是CONCAT_WS()不会忽略任何空字符串。(然而会忽略所有的 NULL)。
COLLECT_SET(col)
:函数只接受基本数据类型,它的主要作用是将某字段的值进行去重汇总,产生array类型字段。
面试题03、列转行函数
EXPLODE(col)
:将hive某列中复杂的array或者map结构拆分成多行。
LATERAL VIEW
:常和UDTF函数一起使用。
用法:LATERAL VIEW udtf(expression) tableAlias AS columnAlias
解释:用于和split, explode等UDTF一 起使用,它能够将一列数据拆成多行数据,在此基础上可以对拆分后的数据进行聚合。
面试题04、Hive的数据文件存储格式
texfile
:默认的存储格式:普通的文本文件,数据不压缩,磁盘的开销比较大,分析开销大。
sequencefile
:提供的一种二进制存储格式,可以切割,天生压缩。
rcfile
:提供的是一种行列混合存储方式,该方式会把相近的行和列数据放在一块儿,存储比较耗时,查询效率高,也天生压缩。
orc
:是rcfile的一种优化存储。
parquet
:自定义输入输出格式
面试题05、Hive中常用的系统函数有哪些
date_add(str,n)、date_sub(str,n)
加减时间
next_day(to_date(str),’MO’)
周指标相关,获取str下周一日期
date_format(str,’yyyy’)
根据格式整理日期
last_day(to_date(str))
求当月最后一天日期
collect_set(col)
收集数据返回一个以逗号分割的字符串数组 get_json_object(jsondata,object)
解析json,使用object获取对象值 NVL(str,replace) 空字段赋值,str为空返回replace值;两个都为空则返回null
总结
今天我们复习了面试中常考的Hive相关的五个问题,你做到心中有数了么?
其实做这个专栏我也有私心,就是希望借助每天写一篇面试题,督促自己学习,以免在吹水群甚至都没有谈资!
对了,如果你的朋友也在准备面试
,请将这个系列扔给他,
这几天由于参加学校活动,到上海参观互联网企业
,一直没时间写,让大家久等了在这里说声抱歉。。。
好了,今天就到这里,学废了的同学,记得在评论区留言:打卡
。给同学们以激励。