Hive 函数使用

内置函数介绍

  • 查看 Hive 所有内置函数
show functions;
  • Hive 测试函数的方法
# 通过常量值测试函数的使用
select substr("abcdefg",1,3);
  • Hive 的所有函数手册

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF#LanguageManualUDF-Built-inFunctions

常用内置函数

类型转换函数
数学运算函数
  • max:聚合函数(针对表所有数据或 group by 分组数据求最大值)
  • min:聚合函数(针对表所有数据或 group by 分组数据求最小值)
字符串函数
时间函数
表生成函数
行转列函数:explode()
横向连接函数 lateral view

主要作用是将复合数据打散,转化为结构化数据,以便于做数据分析和统计

集合函数
  • array_contains:判断数组元素是否存在并返回 boolean 值

  • sort_array:返回排序后的数组

  • size:返回集合大小

  • map_keys:返回 Map 所有 key 值组成的数组

  • map_values:返回 Map 所有 value 值组成的数组

条件控制函数
  • case when

    语法:

    case [expression]
    	when condition1 then result1
    	when condition2 then result2
    	...
    	else result
    end
    
  • if

json 解析函数
  • json_tuple 函数

注:json_tuple 函数只能解析没有嵌套的 json 格式文件

  • get_json_object 函数

注:get_json_object 函数可以解析任意 json 格式文件, 当遇到数组就用 [0,1,2...] 0,1,2是数组对应的元素,遇到jsonObject 直接用 ".key"取出想要获取的 value

row_number() over() 窗口分析函数:分组 TOPN
  • row_number() over() 函数属于分析函数,在做数据分析报表时经常使用

  • rank() over() 函数:与 row_number() over() 函数 功能类似

  • dense_rank() over() 函数:与 row_number() over() 函数 功能类似

sum() over() 窗口分析函数:逐行累加

rows 的条件:

  • unbounded:*限
  • preceding:从分区第一行头开始,则为 unbounded。 N: 为相对当前行向前的偏移量
  • following :与 preceding 相反,到该分区结束,则为 unbounded。N:为相对当前行向后的偏移量
  • current row:顾名思义,当前行,偏移量为 0

OVER() 开窗函数 可以使用的聚合函数 :COUNT、SUM、MIN、MAX、AVG

自定义函数

  • 步骤一:写 Java 程序实现函数功能
  • 步骤二:将 Java 程序打成 Jar 包上传到 Hive 所在主机上
  • 步骤三:使用 Hive 命令将 Jar 包添加到 classpath 中
  • 步骤四:使用 Hive 命令创建一个函数关联 Jar 包中的 Java 类
上一篇:Presto


下一篇:hive tricks