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

hive中udf例子

    博客分类:
  • hive
 
阅读更多

hive中自带了一下函数,但是平常开发中可能需要专门开发一下函数来应对特定的需求,下面写一个udf的例子。

udf是对输入的每行的一列或多个列的值进行计算,并返回值。

导入hive-exec-0.10.0.jar

继承UDF类,重写evaluate方法。

下面实现一个类似oracle中row_number() 的类

/**
 * 实现类似oracle中row_number()函数的功能
 * oracle:  select row_number() over (partition by col1 order by col2) from table;
 * hive:  select row_number(col1) from (select * from table distribute by col1 sort by col1,col2) a;
 * @author twtbgn
 *
 */
public class RowNumber extends UDF{

	String[] lastColumn = new String[50];
	int rownum = 1;
	public int evaluate (String ...args){
		String[] columnValues = new String[args.length];
		for(int i = 0; i < args.length; i++){
			columnValues[i] = args[i];
		}
		if(rownum == 1){
			for(int i = 0; i < args.length; i++){
				lastColumn[i] = columnValues[i];
			}
		}else{
			for(int i = 0; i < args.length; i++){
				if(!columnValues[i].equals(lastColumn[i])){
					for(int j = 0; j < args.length; j++){
						lastColumn[j] = columnValues[j];
					}
					rownum = 1;
					break;
				}
			}
		}
		
		return rownum++;
	}
}

 

在hive的shell中:
hive> add jar /home/hadoop/hive/jar/hive_rownumber.jar;
hive> create temporary function row_number as 'hive.udf.RowNumber';
hive> select row_number(col1), col1, col2
       > from (select col1,col2  from table distribute by col1 sort by  col1, col2) a;

hive> drop temporary function row_number;

 

分享到:
评论

相关推荐

    Hive的Udf函数进行数据脱敏

    在这个例子中,我们的`evaluate()`方法将接受一个字符串作为输入,即需要脱敏的数值。我们首先截取前5个字符,然后用星号填充剩余部分。以下是一个简单的示例: ```java public class MaskingUDF extends ...

    hive按月份加减udf范例

    在这个例子中,UDF可能是用于接受一个日期,并增加或减少指定的月份数量。 为了实现这样的UDF,我们首先需要创建一个Java类,该类继承自Hive的`org.apache.hadoop.hive.ql.udf.generic.GenericUDF`类,并重写必要的...

    hive-udf-example

    在这个例子中,我们可能会学习到以下知识点: 1. **Hive UDF的结构**:了解UDF的基本构成,包括如何定义输入和输出类型,以及如何处理数据。 2. **HiveQL与UDFs**:学习如何在Hive查询语句中使用自定义的UDF,比如...

    自定义hive函数

    在描述中提到的“url解析,获取网站主域名”就是一个UDF的例子。你可以编写一个Java类,实现Hive的UDF接口,然后注册到Hive中,这样就可以在Hive SQL语句中调用这个函数,对URL字符串进行解析,提取出主域名部分。 ...

    Hive-JSON-Array-UDF:一个UDF从嵌套的JSON数组中检索元素,并作为HiveQL数组返回

    Hive嵌套JSON Arrray UDF 此UDF接收“ JSON字符串”和JSON数组的路径,并收集此路径指定的所有元素(也处理嵌套的JSON数组)。 例子: 假设此JSON在某些表的行中: {" request " : {" user " : " Mario " ," ...

    hive自定义函数demo

    “hive自定义函数demo”提供的例子展示了如何在实际场景中增强Hive的功能,通过编写自定义函数来解决特定业务问题。了解和掌握Hive UDF的开发和使用对于大数据分析人员来说是非常有价值的技能,它可以帮助你更好地...

    udf.zip_UDF案例_udf_udf模板

    UDF,全称为User Defined Function(用户自定义函数),在编程和数据分析领域中扮演着重要角色,尤其是在数据库管理系统、大数据处理框架如Hadoop的Hive、Pig或Spark SQL等中。UDF允许用户扩展系统功能,以满足特定...

    hive 创建自定义函数 和 hive加载说明

    在这个例子中,如果source_table中包含了year和month字段,Hive会根据这些字段的值自动为my_table的对应分区插入数据。 总的来说,理解并掌握Hive创建自定义函数和加载机制,能极大地拓展Hive的功能,适应各种复杂...

    Hive用户指南 Hive user guide 中文版

    #### 六、Hive UDF - **基本函数**:包括算术运算符、逻辑运算符、日期函数等。 - **UDTF**:用户定义的表生成函数,如`EXPLODE`用于展开数组或映射类型。 #### 七、Hive的MapReduce - Hive内部使用MapReduce来...

    分布式数据仓库Hive大全

    6. HIVE UDF 33 6.1 基本函数 33 6.1.1 关系操作符 33 6.1.2 代数操作符 34 6.1.3 逻辑操作符 35 6.1.4 复杂类型操作符 35 6.1.5 内建函数 36 6.1.6 数学函数 36 6.1.7 集合函数 36 6.1.8 类型转换 36 6.1.9 日期...

    用于hive的实例

    在这个例子中,我们首先加载了Hive JDBC驱动,然后建立了到Hive服务的连接。通过`Statement`对象,我们可以执行HQL查询,获取`ResultSet`来遍历查询结果。需要注意的是,为了安全起见,生产环境中应使用连接池和更...

    Hive用户指南(Hive_user_guide)_中文版

    - **1.4.2 MySQL**:MySQL是一个成熟的开源关系型数据库管理系统,通常用于生产环境中Hive的元数据存储。相比于Derby,MySQL提供了更好的可靠性和性能,支持多用户并发访问。 **1.5 Hive的数据存储** Hive的数据...

    大数据处理中Hive函数的功能解析与应用【Hive函数大全手册】

    内容概要:本文档详细介绍了Hive内置用户定义函数(UDF)的各项功能。内容涵盖算术、逻辑、日期时间处理、字符串处理等各类函数的使用方法及其应用场景。它不仅解释了函数的基本概念和作用方式,还展示了通过实际例子...

    15-Hive统计1

    在这个例子中,UDF用于将`creationtime`字段的完整时间戳转化为只有年月日的形式。 6. **创建Hive表** - 创建Hive表涉及定义表名、字段名、数据类型以及分隔符。例如,`pinglun`表包含了关于产品评论的各种信息,...

    《Hive编程指南》英文文字版 非扫描版 带标签 超清晰

    此外,本书还对Hive的高级特性,如用户自定义函数(UDF)和数据存储格式等进行了阐述。 《Hive编程指南》还讨论了Hive与Hadoop其他组件的关系,比如HBase和Pig。HBase是一个开源的非关系型分布式数据库,它在Hadoop...

    hive操作指南

    - Hive允许通过UDF(User Defined Function)来调用Python、Shell等脚本语言。 **2.8 删除** - 示例:`DROP TABLE IF EXISTS employees;` **2.9 其他操作** - **2.9.1 Limit** - 示例:`SELECT * FROM ...

    Hive-Examples:Hadoop 的 Hive 的一些示例

    6. **Hive 与 Java API**: Hive 提供了 Java API,允许开发人员编写自定义的 Hive 存储过程(UDF, UDAF, UDTF)和驱动程序。标签 "Java" 暗示了这个项目可能包含如何使用 Java 与 Hive 进行交互的例子。 7. **Hive ...

    impala中substr()截取中文字符串乱码的问题

    在大数据处理领域,Impala作为一个高性能的SQL查询引擎,常被用于实时分析大规模数据集。然而,当涉及到处理中文字符时,...同时,这也是一个很好的例子,展示了如何利用UDF来增强Impala的功能,满足特定的业务需求。

Global site tag (gtag.js) - Google Analytics