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 和 UDAF 的集合。 提供的功能 UDAF Mode ( de.frosner.hive.udaf.Mode ) - 计算组列的统计模式 从源头构建 git clone https://github.com/FRosner/mustached-hive-udfs.git cd mustached...
和 DataFrames 一起使用。 用 Python 编写的原生 Spark UDF 很慢,因为它们必须在 Python 进程中执行,而不是基于 JVM 的 Spark Executor。 要让 Spark Executor 运行 Python UDF,它必须: 将数据从分区发送到与 ...
自定义 hive udf udaf 有url解析,获取网站主域名,根据ip获取区域码,有rownum,列聚合以及一些业务实现udf。
个人 Hive UDAF 有一堆 Hive UDAF(用户定义的聚合函数)不在标准 Hive 分布中,因为它们可能会导致大型数据集的 OOM。 要使用它们,您需要加载 jar 文件,然后为每个要使用的函数创建一个临时函数: ADD JAR target...
hive-udf-hook UDF开发及发布过程 1 用户编写UDF实现类 2 编写完成后,在UDFHooks类中调用相关注册函数: 调用 FunctionRegistry.registerUDF 注册udf 调用 FunctionRegistry.registerUDAF 注册udaf 调用...
=================适用于Apache Hive的DataSketches Java UDF / UDAF适配器请访问主要的以获取更多信息。 如果您有兴趣对此站点做出贡献,请参阅我们的页面以了解如何与我们联系。Hadoop Hive UDF / UDAF 请参阅Java...
hive常用函数,包括时间、类型、udf、udaf等等的归纳。
赵伟首先介绍了他们的TDW核心架构,HIVE,MapReduce,HDFS及PostgreSQL构成。赵伟分享了最核心的HIVE模块在TDW中的实践经验;HIVE是一个在Hadoop上构建数据仓库的软件,它...实现了基本的SQL功能,可扩充UDF/UDAF...
hive-udfhive自定义函数主要实现hive3种自定义函数1,udf函数,主要用于处理一对一数据处理2,udtf函数,主要用于处理一对多数据处理2,udaf函数,主要用与处理多对一数据聚合处理
Apache Hive(TM)数据仓库软件有助于查询和... HiveQL还可以使用自定义标量函数(UDF),聚合(UDAF)和表函数(UDTF)进行扩展。https://mirrors.tuna.tsinghua.edu.cn/apache/hive/hive-standalone-metastore-3.0.0/
Hadoop和Hive在Facebook的应用 概要介绍 Hadoop a Facebook 假想的使用情况案例 Hive 问题与未来工作计划 Nutch 搜索引擎 背景介绍 数据结构 Nutch系统利用Hadoop进行数据处理的精选实例 总结 Rackspace的日志处理 ...
使用Spark-2.1实现自定义UDF,UDAF,Partitioner 使用数据框(ComplexSchema,DropDuplicates,DatasetConversion,GroupingAndAggregation) 使用数据集处理Parquet文件按特定列对数据进行分区并按分区进行存储使用...
Hadoop和Hive在Facebook的应用 概要介绍 Hadoop a Facebook 假想的使用情况案例 Hive 问题与未来工作计划 Nutch 搜索引擎 背景介绍 数据结构 Nutch系统利用Hadoop进行数据处理的精选实例 总结...
数据处理与分析: 利⽤分布式并⾏编程模型和计算框架,结合机器学习和数据挖掘算法,实现对海量数据的处理和分析。 3.场景化解决⽅案 在⾯对不同的场景时,会使⽤不同的⼤数据组件去解决处理,主要有如下⼤数据场景...
HiveSQL也可以通过用户定义的函数(UDF),用户定义的集合(UDAF)和用户定义的表函数(UDTF)扩展为用户代码。 Hive用户在执行SQL查询时可以选择3种运行时。 用户可以选择Apache Hadoop MapReduce,Apache Tez或...
Writing a UDAF 451 13. HBase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457 HBasics 457 Backdrop 458 Concepts 458 ...