Hive笔记整理 -- 系统函数

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

常用函数

  1. array(e1 , e2 … , en) –创建数组 数组是hive中的一种集合类型
    select array(1,2,3,4);
    select array (1,2,3,4)[index];

  2. array_contains(arr,element) ; --数组中是否含有该元素
    select array_contains(arr,‘element’);

  3. upper --转大写 栗子:select upper(‘abc’);
    lower --转小写 select lower(‘ABC’);

  4. split(str,seq) 切割,返回数组
    select split(“hello-tom-jarry”,"-");

  5. trim(str) --去除字符串首尾的空格
    select trim(" hello ");

  6. select uuid(); --生成随机字符串

  7. replace(str,search,rep) --替换
    select replace(“e28d58fe-b4ad-4c2e-9243-0ae280cc8f14”,"-", “_”);
    “e28d58fe-b4ad-4c2e-9243-0ae280cc8f14”
    “e28d58fe_b4ad_4c2e_9243_0ae280cc8f14”

  8. reverse --字符串反转
    select reverse(“hello hive”);---->evih olleh

  9. substr(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  |
+------+
| 战争   |
| 动作   |
| 抗日   |
| 剧情   |
| 动画   |
| 神话   |
| 科幻   |
| 动作   |
| 伦理   |
| 战争   |
| 动作   |
| 灾难   |
+------+

窗口函数:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值