HIVE函数UDAF 最大值

Posted 超超hd

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HIVE函数UDAF 最大值相关的知识,希望对你有一定的参考价值。

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 最大值的主要内容,如果未能解决你的问题,请参考以下文章

Hive UDAF开发详解

Hive UDAF开发详解

深入理解 Hive UDAF

深入理解 Hive UDAF

如何使用 Java 为 Hive 编写 UDAF 函数

hive自定义函数UDF UDTF UDAF