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)

时间: 2024-08-03 17:31:28

HIVE函数UDAF 最大值的相关文章

Hive自定义函数UDAF开发

Hive支持自定义函数,UDAF是接受多行,输出一行. 通常是group by时用到这种函数. 其实最好的学习资料就是官方自带的examples了. 我这里用的是0.10版本hive,所以对于的examples在 https://github.com/apache/hive/tree/branch-0.10/contrib/src/java/org/apache/hadoop/hive/contrib/udaf/example 我这里的功能需求是: actionCount(act_code,ac

Hive(四)hive函数与hive shell

一.hive函数 1.hive内置函数 (1)内容较多,见< Hive 官方文档>            https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF        (2)详细解释:            http://blog.sina.com.cn/s/blog_83bb57b70101lhmk.html (3) 测试内置函数的快捷方式: 1.创建一个 dual 表 create table dual

给定N个整数的序列,求函数的最大值

题目:给定N个整数的序列,求函数的最大值. 算法1: int maxSubseqSum1(int A[],int N) { int ThisSum,maxSum=0; int i,j,k; for(i=0;i<N;i++)//i是子列左端位置 { for(j=i;i<N;j++)//j是子列右端位置 { ThisSum=0;//ThisSum是从A[i]到A[j]的子列和 for(k=i;k<=j;k++) ThisSum+=A[k]; if(ThisSum>MaxSum)//如果

Hive函数

1.时间函数 from_unixtime函数  用法为将时间戳转换为时间格式 语法: from_unixtime(bigint unixtime[, string format])   返回值为string 例如  hive>select from_unixtime(1326988805,'yyyyMMddHH') from test; 如果为字段转换的话,则为 select from_unixtime(time,'yyyyMMddHH') from test; 字段time如果为string类

(转)Hive自定义UDAF详解

UDAF有两种,第一种是比较简单的形式,利用抽象类UDAF和UDAFEvaluator,暂不做讨论.主要说一下第二种形式,利用接口GenericUDAFResolver2(或者抽象类AbstractGenericUDAFResolver)和抽象类GenericUDAFEvaluator.         这里用AbstractGenericUDAFResolver做说明. public abstract class AbstractGenericUDAFResolver implements G

Hive函数大全

一.关系运算: 1. 等值比较: = 语法:A=B 操作类型:所有基本类型 描述: 如果表达式A与表达式B相等,则为TRUE:否则为FALSE 举例: hive> select 1 from lxw_dual where 1=1; 1 2. 不等值比较: <> 语法: A <> B 操作类型: 所有基本类型 描述: 如果表达式A为NULL,或者表达式B为NULL,返回NULL:如果表达式A与表达式B不相等,则为TRUE:否则为FALSE 举例: hive> select

【Hive学习之三】Hive 函数

环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk8 hadoop-3.1.1 apache-hive-3.1.1 1.内置运算符 1.1关系运算符 运算符 类型 说明 A = B 所有原始类型 如果A与B相等,返回TRUE,否则返回FALSE A == B 无 失败,因为无效的语法. SQL使用"=",不使用"==". A <> B 所有原始类型 如果A不等于B返回T

Hive函数详解与案列实战

1.Hive系统内置函数 1.1.数值计算函数 1.取整函数: round 语法: round(double a)返回值: BIGINT说明: 返回double类型的整数值部分 (遵循四舍五入) hive> select round(3.1415926) from tableName; 3 hive> select round(3.5) from tableName; 4 hive> create table tableName as select round(9542.158) fro

[转]HIVE UDF/UDAF/UDTF的Map Reduce代码框架模板

FROM : http://hugh-wangp.iteye.com/blog/1472371 自己写代码时候的利用到的模板 UDF步骤: 1.必须继承org.apache.hadoop.hive.ql.exec.UDF 2.必须实现evaluate函数,evaluate函数支持重载 Java代码   <span style="font-size: x-small;">package com.alibaba.hive.udf; import org.apache.hadoo