中位数算法:
https://segmentfault.com/a/1190000008322873
http://www.voidcn.com/article/p-yzrnuwwi-bdv.html
hive类型和java类型
Hive column type | UDF types |
string | java.lang.String, org.apache.hadoop.io.Text |
int | int, java.lang.Integer, org.apache.hadoop.io.IntWritable |
boolean | bool, java.lang.Boolean, org.apache.hadoop.io.BooleanWritable |
array | java.util.List |
map |
java.util.Map |
struct | Don't use Simple UDF, use GenericUDF |
UDAF
http://www.cnblogs.com/ggjucheng/archive/2013/02/01/2888051.htmlGenericUDAFEvaluator
的几种MODE
定义如下:
1 | public static enum Mode { |
特别提醒:
Merge函数的输入参数是(State other),因为other对象会被复用,因此other里的成员的使用不能是浅拷贝,(比如直接塞到当前state里),可以用深拷贝.(对于List,Map等容器)
系统内置的UDAF函数可以从:FunctionRegistry
类中查看.
流程控制更为精细的UDAF,AVG:org.apache.hadoop.hive.ql.udf.generic.GenericUDAFAverage
hive调用java方法:
select java_method(“java.lang.Math”,”max”,1,2);
UDF数据类型相关
1 | select array(1,2,3) -- => [1,2,3] |