首页 > 其他 > 详细

HIVE函数UDAF 最大值

时间:2017-01-09 00:26:08      阅读:341      评论:0      收藏:0      [点我收藏+]

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)

 

HIVE函数UDAF 最大值

原文:http://www.cnblogs.com/itxuexiwang/p/6263110.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!