Hive-函数总结

目录

查看

分类

分组

数学

取余

字符串

数组

炸裂

explode(array | map)

posexplode

lateral view

排序 4by

order by 全局排序

sort by 每个reducer内排序

distribute by 分组

cluster by

排名 聚合


 

查看

show functions -- 查看所有函数,共216个
show functions like '*array*' -- 模糊查询
desc function extended 函数名 -- 查看用法

分类

根据函数输入行数与输出行数

UDF  一对一
用户自定义函数,即普通函数,例如space

UDAF 多对一
用户自定义聚合函数,即聚合函数

UDTF 一对多
用户自定义表生成函数,例如explode

分组

group by -- 相同值分组,右侧括号图

数学

取余

奇数:num % 2 = 1
pmod(num1,num2)  -- 余数绝对值

字符串

  1. space(n) -- n个空格字符串
  2. 拼接
    1. concat(str1,str2,...strN) -- 写谁拼谁,有空则空
    2. concat_ws(separator, [string | array(string)]+) -- 同一个分隔符
  3. reverse(str) -- 倒序字符

数组

  • split(str,expr) -- str拆成数组,按照正则表达式
  • 列转数组
    • collect_set -- 去重,去null
    • collect_list -- 不去重
  • sort_array(array)  -- 排数组元素,只能升序

炸裂

explode(array | map)

语法
按行输出数组元素
select explode:只能一个UDTF
不支持group by

单独使用

select explode(split(space(3),' ')) ex;

 

配套使用 lateral view

select * -- 全局查询
from (select space(3) str_space)tmp -- 字符串
lateral view explode(split(str_space,' ')) ex as val -- 一一对应作用
;

 

posexplode

语法:行为像explode,只是多了数组元素的位置
单独使用

select posexplode(split(space(3),' '));

配套使用 lateral view

select * 
from (select space(3) str_space)tmp -- 字符串
lateral view posexplode(split(str_space,' ')) posex as pos,val;

 

lateral view

语法

lateral view explode 表别名 [as 元素] -- 不返回null行
lateral view posexplode 表别名 [as 位置,元素] -- 返回null行

作用:辅助扩展表数据
1.可以在select语句外使用;UDTF变成虚拟表
2.关联范围笛卡尔积(类比cross join:所有行笛卡尔积)
3.直接使用字段不需要嵌套
4.可多个 

使用

-- 两个lateral view各一个笛卡尔积
-- 最后两张虚拟表笛卡尔积运算;共三次笛卡尔积

select *
from (select space(3) str_space)tmp -- 结果 4 * 4 = 16行
lateral view explode(split(str_space,' ')) es as val -- 4行
lateral view posexplode(split(str_space,' ')) pex as pos,val1 -- 4行
;

 

排序 4by

order by 全局排序

对输入所有数据排序,只有一个reducer,无论设置是多少个,容易OOM

sort by 每个reducer内排序

默认一个reduce
所以使用前设置reduce个数

distribute by 分组

分发map端数据给reducer
分组规则:hash值相同分到一个组

类比group by + 聚合函数
分组规则:相同值分组

distribute by rand()保证每个分区的数据量基本一致,防止数据倾斜

cluster by

distribute by和sort by字段相同,可使用
只能asc

distribute by + sort by 使用场景
1.Map输出的文件大小不均
2.Reduce输出文件大小不均
3.小文件过多
4.文件超大

排名 聚合

 

相关推荐

  1. hive中map相关函数总结

    2024-01-27 22:38:02       72 阅读
  2. hive中array相关函数总结

    2024-01-27 22:38:02       65 阅读
  3. hive中struct相关函数总结

    2024-01-27 22:38:02       71 阅读
  4. hive中split函数相关总结

    2024-01-27 22:38:02       46 阅读
  5. Hive函数 date_format 使用示例总结

    2024-01-27 22:38:02       36 阅读
  6. hive总结

    2024-01-27 22:38:02       62 阅读
  7. hive总结

    2024-01-27 22:38:02       47 阅读
  8. Hive函数

    2024-01-27 22:38:02       39 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-27 22:38:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-27 22:38:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-27 22:38:02       82 阅读
  4. Python语言-面向对象

    2024-01-27 22:38:02       91 阅读

热门阅读

  1. Golang 垃圾回收

    2024-01-27 22:38:02       57 阅读
  2. js如何数组去重

    2024-01-27 22:38:02       62 阅读
  3. 抖音私信风车怎么做,详细的实现过程,附视频

    2024-01-27 22:38:02       59 阅读
  4. Vue3使用百度地图marker点位实现水波纹动效

    2024-01-27 22:38:02       49 阅读
  5. 深入了解 Spring ImportBeanDefinitionRegistrar

    2024-01-27 22:38:02       50 阅读
  6. ‘HEAD‘ 是 HTTP 请求的一种方法

    2024-01-27 22:38:02       47 阅读
  7. vue2中的$nextTick原理和简单实现

    2024-01-27 22:38:02       49 阅读
  8. unitary MUSIC 算法

    2024-01-27 22:38:02       50 阅读
  9. C++算法学习心得七.贪心算法(1)

    2024-01-27 22:38:02       46 阅读
  10. 【Axure视频教程】文本替换函数

    2024-01-27 22:38:02       66 阅读