`
sunasheng
  • 浏览: 122919 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Hive的UDF和UDAF编程实例

阅读更多

1.UDF

UDF类必须继承org.apache.hadoop.hive.ql.exec.UDF类,并且实现evaluate方法

1.建立工程

2.导入hive和hadoop的jar包

3.编写代码

        

public class lower_Or_UpperCase extends UDF
	{
		//实现至少一个evaluate方法
		public Text evaluate(Text t,String up_or_lower)
		{
			if(t==null)
			{
				return null;
			}
			//依据标识的参数转换大小写
			else if(up_or_lower.equals("lowercase"))
			{
				return new Text(t.toString().toLowerCase());
			}
			else if(up_or_lower.equals("uppercase"))
		    {
				return new Text(t.toString().toUpperCase()) 
			}
			else
		    {
				return null;
		    }
		}
	}

        4.检查代码无误后打成jar包,名字为uporlower.jar,放置到/home/dengpeng下

5.进入Hive的shell,用add jar命令把jar包导入到Hive的环境变量下,用create temporary function as命令基于jar包中的类创建临时的函数,之后就可以在查询中使用函数了

hive>add jar /home/dengpeng/uporlower.jar

hive>create temporary function uporlower as 'com.cstore.lower_Or_UpperCase';

6.最后可以把不再需要的函数进行销毁

hive>drop temporary funtion uporlower;

2.UDAF

UDAF类必须继承自org.apache.hadoop.hive.ql.exec.UDAF类,并且实现接口org.apache.hadoop.hive.ql.exec.UDAFEvaluator;

接口有5个方法:init  iterate  terminatePartial  merge  terminate

       

public class GeometricMean extends UDAF
	{
		public static class midResult
		{
			public long numCount;
			public double multSum;
		}
		public static class GMEvaluator implements UDAFEvaluator
		{
			midResult midr;
			public GMEvaluator()
			{
				super();
				midr = new minResult();
				init();
			}
			public void init()//对中间结果实现初始化
			{
				midr.multSum = 1;
				midr.numCount = 0;
			}
			public boolean iterate(IntWritable a)//接受传入的参数,并进行内部的轮转
			{
				if(a!=null)
				{
					midr.multSum*=a.get();
					midr.numCount++;
				}
				return true;
			}
			public midResult terminatePartial()//负责返回iterate函数轮转后的数据
			{
				return midr.numCount==0?null:midr;
			}
			public boolean merge(midResult b)//接受terminatePartial的返回结果,合并接受的中间值
			{
				if(b!=null)
				{
					midr.numCount*=b.numCount;
					midr.nultSum+=b.multSum;
				}
				return true;
			}
			public Double terminate()//返回最终的结果
			{
				return midr.numCount==0?null:Math.pow(midr.multSum,1.0/midr.numCount);
			}
		}
	}

 

分享到:
评论

相关推荐

    hive UDF需要jar包

    综上所述,Hive UDF的开发和使用涉及到Java编程、Hive和Hadoop的库依赖管理、函数注册以及在实际查询中的应用。了解和掌握这些知识点,能够帮助开发者更好地利用Hive UDF解决复杂的数据处理问题。

    mustached-hive-udfs:一些有用的 Hive UDF 和 UDAF

    这是一些有用的 Hive UDF 和 UDAF 的集合。 提供的功能 UDAF Mode ( de.frosner.hive.udaf.Mode ) - 计算组列的统计模式 从源头构建 git clone https://github.com/FRosner/mustached-hive-udfs.git cd mustached...

    HIve UDF 说明书

    内置聚合函数(UDAF)和表生成函数(UDTF)是Hive UDF中的高级功能。UDAF允许用户编写自定义的聚合逻辑,如自定义的count、sum、avg等;UDTF则允许用户将一行数据转换为多行数据,或者将多行数据合并为一行数据输出...

    dataiku hive udf

    Hive UDF分为三种主要类别:UDF(User Defined Scalar Functions),UDAF(User Defined Aggregate Functions),以及UDTF(User Defined Table Generating Functions)。UDF处理单行输入并返回单行输出,如字符串...

    Hive的Udf函数进行数据脱敏

    ADD JAR /path/to/your/hiveUDF.jar; CREATE TEMPORARY FUNCTION mask AS 'com.yourpackage.MaskingUDF'; ``` 4. **使用UDF**: 注册完成后,你可以在查询中直接使用`mask`函数。假设我们有一个包含手机号码的表`...

    《Hive的开发指南》

    Hive 基本概念 Hive 应用场景。 Hive 与hadoop的关系。 Hive 与传统数据库对比。 Hive 的数据存储机制。 Hive 基本操作 ...Hive 中的DDL操作。...Hive UDF/UDAF开发实例。 Hive 执行过程分析及优化策略

    Hive_UDF.rar_hive_sqoop

    Hive 支持多种类型的 UDF,包括普通函数(UDF)、聚合函数(UDAF)和表生成函数(UDTF)。UDF 允许用户扩展 Hive 的功能,处理特定的数据转换和计算任务。例如,你可以创建一个 UDF 来处理文本,如分词、去除停用词...

    hive-exec-udf

    而Hive的执行引擎和用户自定义函数(UDF)是其核心功能之一,它们共同构建了Hive的强大计算能力。本文将详细探讨Hive执行机制以及UDF的使用和开发。 一、Hive执行引擎 Hive执行引擎负责解析用户的HQL语句,将其...

    hive-udf-collections:Hive 用户定义函数 (UDF) 集合

    - Hive UDFs 分为三类:UDF(单行函数),UDAF(聚合函数)和 UDTF(多行函数)。`hive-udf-collections` 主要关注 UDF。 - UDF 允许用户扩展 Hive 的功能,解决内置函数无法满足的特定需求。 - UDFs 必须用 Java...

    设计开发 Hive 编程指南 完整版

    《设计开发 Hive 编程指南 完整版》是一份详尽的教程...这份完整的编程指南将详细解释以上知识点,并通过实例演示如何使用 Hive 进行数据处理和分析,对于希望掌握 Hive 技术的开发者来说,是一份非常宝贵的参考资料。

    hive按月份加减udf范例

    Hive的UDF可以分为三类:UDF(单行)、UDAF(多行,聚合)和UDTF(多行到多行)。在这个例子中,我们讨论的是UDF,因为它处理单行数据。 在压缩包文件名`addmonth`中,我们可以猜测这个文件可能包含了实现月份加法...

    自定义hive函数

    Hive 的灵活性之一在于支持用户自定义函数(UDF),包括用户定义的单行函数(UDF)、用户定义的多行函数(UDAF)和用户定义的表函数(UDTF)。这些自定义函数允许开发者扩展Hive的功能,以满足特定的业务需求。 ...

    hive:个人配置单元 UDAF

    个人 Hive UDAF 有一堆 Hive UDAF(用户定义的聚合函数)不在标准 Hive 分布中,因为它们可能会导致大型数据集的 OOM。 要使用它们,您需要加载 jar 文件,然后为每个要使用的函数创建一个临时函数: ADD JAR target...

    hive-udf-tools:hive udf 部署工具,开发工具...

    hive-udf-hook UDF开发及发布过程 1 用户编写UDF实现类 2 编写完成后,在UDFHooks类中调用相关注册函数: 调用 FunctionRegistry.registerUDF 注册udf 调用 FunctionRegistry.registerUDAF 注册udaf 调用...

    hive自定义函数demo

    本示例“hive自定义函数demo”将探讨如何在Hive中开发和使用自定义函数(UDF),这对于扩展Hive的功能和适应特定业务需求至关重要。下面,我们将深入学习与Hive自定义函数相关的知识。 1. **什么是Hive UDF?** ...

    datasketches-hive:Hive的草图适配器

    =================适用于Apache Hive的DataSketches Java UDF / UDAF适配器请访问主要的以获取更多信息。 如果您有兴趣对此站点做出贡献,请参阅我们的页面以了解如何与我们联系。Hadoop Hive UDF / UDAF 请参阅Java...

    Hive编程指南

    6. **存储过程(UDF, UDAF, UDTF)**:Hive支持用户自定义函数,包括单行函数(UDF)、多行聚合函数(UDAF)和多行返回函数(UDTF),扩展Hive的功能。 7. **MapReduce**:Hive查询的执行引擎默认是基于MapReduce的,它将...

    hive的自定义函数

    Hive支持三种类型的自定义函数:用户定义的函数(UDF)、用户定义的聚合函数(UDAF)和用户定义的表生成函数(UDTF)。本篇文章主要介绍UDF的实现方法。 ##### 2.1 UDF的作用 - **扩展性**:允许开发人员根据具体...

    Apache Hive Functions Cheat Sheet

    UDF的实例化和evaluate方法需要根据输入数据类型进行定义。如果需要创建更通用的UDF,可以使用GenericUDF类。而对于UDAF,需要继承自AbstractGenericUDAFResolver类来实现。同样,创建UDTF需要继承GenericUDTF类。...

    apache-hive-2.3.9-bin.tar大数据HIVE.zip

    6. **存储过程(UDF,UDAF,UDTF)**:Hive支持用户自定义函数(UDF),用户定义聚合函数(UDAF)和用户定义表生成函数(UDTF),允许扩展Hive的功能。 7. **连接Hadoop生态系统**:Hive与Hadoop生态系统的其他组件...

Global site tag (gtag.js) - Google Analytics