HQL (hive sql)之函数总结
1. 背景
- 作为操作hive客户端的编程语言,hql有自己的数据类型,自然也有编译器,也有函数。并且这个函数有内置,也允许自定义来扩展功能
- 注意,不管是普通hql语言还是函数,最终都是转换为mapreduce程序来运行。(很少部分例外,是一些sql语句可以优化为不使用mapreduce,直接读取文件获取结果即可)
2. hive定义函数
2.1. 查看系统自带函数
show functions;
2.2. 显示自带函数用法
desc function upper;
2.3. 详细显示自带函数用法
desc function extended upper;
2.4. 官方文档
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF
2.5 函数分类
2.5.1 运算符优先级
2.5.2 关系运算,就是得出的结果是true或者false(特殊几个特定场景返回NULL)
2.5.3 数值运算
注意,在HQL中,并没有异常这种概念,包括数组越界,null空指针等,只会以返回null值或者其他方式来兼容这些异常,并不是像java程序一样直接终止程序
2.5.4 逻辑运算符
2.5.5 字符串操作符
2.5.6 复杂类型构造方法
2.5.7 复杂类型操作符
2.5.8 数学运算
2.5.9 集合函数
2.5.10 类型转换
2.5.11 日期函数
2.5.12 条件判断
2.5.13 字符串处理函数
2.5.14 遮罩函数(给值加一层面具,类似把身份证中间几位变成***,带上面具一样,敏感信息就不会直接显示出来)
2.5.15 非查询相关函数
2.5.16 聚合函数
2.5.17 打散函数(将数据打散为一个中间数据表集合)
3. 自定义函数
概述
- 当hive自带函数无法满足要求时,可以自行编写java代码,打包后上传,然后临时或者永久关联到hive中,这样就是在hive中使用自定义的函数。
- 自定义函数也是分为多类
- 一进一出,UDF(user defined function)
- 多进一出(UDAF user defined aggregation function)
- 一进多出(UDTF user defined table generating functions)
- 官方文档地址
https://cwiki.apache.org/confluence/display/Hive