hive函数分类:
从输入输出角度:
标准函数:一行数据中的一列或多列为输入,结果为单一值
聚合函数:多行的零列到多列为输入,结果为单一值
表生成函数:零个或多个输入,结果为多列或多行
从实现方式分类:
内置函数
自定义函数:
UDF:自定义 标准函数
UDAF:自定义聚合函数
UDAF:自定义表生成函数
标准函数有
字符函数:
类型转换函数:
数学函数:
日期函数:
集合函数:
条件函数
聚合函数
count、sum、max、min、avg、var_samp等
表生成函数
自定义函数步骤:
zip -d hadooplearn.jar ‘META-INF/.SF’ ‘META-INF/.RSA’ ‘META-INF/*SF’
第一步:集成UDF类,重写evaluate方法
import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.io.Text;
public class Str2Lower extends UDF {
public Text evaluate(final Text s) {
if (s == null) {
return null;
}
return new Text(s.toString().toLowerCase());
}
}
第二步:打jar包,上传到集群
第三步:在Hive中添加jar包
add jar /root/jars/hadoopLearn-1.0-SNAPSHOT.jar;
第四步:创建函数
create [temporary] function str2lower2 as ‘cn.kgc.hiveudf.Str2Lower’;
临时函数:临时创建,退出终端后函数消失,在函数的有效期内,所有的数据库中都可以使用
永久函数:永久性使用,需要将jar包放到hdfs上,切换到其他的数据库不可用
// 上传jar包到hdfs上
hdfs dfs -mkdir /hiveudf
hdfs dfs -put hadoopLearn-1.0-SNAPSHOT.jar /hiveudf
// 添加jar包
add jar hdfs://hadoop1:9000/hiveudf/hadoopLearn-1.0-SNAPSHOT.jar;
// 创建永久函数
create function str2lower2 as 'cn.kgc.hiveudf.Str2Lower';