Maximum
package udf.hive.myudf; import org.apache.hadoop.hive.ql.exec.UDAF; import org.apache.hadoop.hive.ql.exec.UDAFEvaluator; import org.apache.hadoop.io.IntWritable; public class Maximum extends UDAF { public static class MaximumIntUDAFEvaluator implements UDAFEvaluator { private IntWritable result; public void init() { result = null; } public boolean iterate(IntWritable value) { if (value == null) { return true; } if (result == null) { result = new IntWritable(value.get()); } else { result.set(Math.max(result.get(), value.get())); } return true; } public IntWritable terminatePartial() { return result; } public boolean merge(IntWritable other) { return iterate(other); } public IntWritable terminate() { return result; } } }
然后通过mvn打包。
add JAR /home/cloudera/Desktop/myudf-0.0.3-SNAPSHOT.jar;
CREATE TEMPORARY FUNCTION my_max2 AS 'udf.hive.myudf.Maximum';
hive> select pid from prouct;
OK
1
2
3
4
select my_max2(oid) from prouct;
OK
4
Time taken: 166.32 seconds, Fetched: 1 row(s)