Hive笔记整理 – 系统函数
查看系统函数
show function; – 展示系统中所有的函数
desc function 函数名; – 查看该函数的使用
数据表分区查询 排序
排序在执行的时候默认是一个reducetask
set mapreduce.job.reduces=n; – 为方便查看效果,可以先设置reducetask数量n
set mapreduce.job.reduces; – 查看配置数量
order by – 全局结果排序
distribute by – 指定分区的字段 分区
sort by 字段 desc – 区内数据排序
cluster by – 当分区字段和排序相同,并且是升序的时候使用cluster by 替换 distribute by sort by
常用函数
array(e1 , e2 … , en) –创建数组 数组是hive中的一种集合类型
select array(1,2,3,4);
select array (1,2,3,4)[index];array_contains(arr,element) ; --数组中是否含有该元素
select array_contains(arr,‘element’);upper --转大写 栗子:select upper(‘abc’);
lower --转小写 select lower(‘ABC’);split(str,seq) 切割,返回数组
select split(“hello-tom-jarry”,"-");trim(str) --去除字符串首尾的空格
select trim(" hello ");select uuid(); --生成随机字符串
replace(str,search,rep) --替换
select replace(“e28d58fe-b4ad-4c2e-9243-0ae280cc8f14”,"-", “_”);
“e28d58fe-b4ad-4c2e-9243-0ae280cc8f14”
“e28d58fe_b4ad_4c2e_9243_0ae280cc8f14”reverse --字符串反转
select reverse(“hello hive”);---->evih ollehsubstr(str,起始位置索引为1,长度)
select substr(“hello_hive”,2,5); --> ello_
- substring() 和substr() 用法相同
- substring_index(“a-b-c”,"-",2); --> a-b --按指定的分隔符切割取前2段.
聚合函数:
1) concat(str1,str2, ...) -----聚合字符串
select concat("str1","->","str2"); ---->str1-->str2
select concat_ws(",",'a','b','c','d'); ------>a,b,c,d
2) 查询得到的一列数据,转换成行数组
collect_list()
collect_set() 去除重复
select collect_list(name) from tb_name; ----> 行转列
3) explode(e) -----将一行的数组拆成一列的形式
select
name,
tp
from
tb_movie11
lateral view --侧窗口函数 类似隐式join
explode(split(types,',')) t as tp;
+--------+
| tb_movie11.name |
+--------+
| 《八佰》 |
| 《姜子牙》 |
| 《战狼2》 |
+--------+
+------+
| col |
+------+
| 战争 |
| 动作 |
| 抗日 |
| 剧情 |
| 动画 |
| 神话 |
| 科幻 |
| 动作 |
| 伦理 |
| 战争 |
| 动作 |
| 灾难 |
+------+