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

hive基于UDAF的编写

    博客分类:
  • hive
阅读更多
-------------
select concat(account,'\t',bfdutmb,'\t',page_url) from (
select account,bfdutmb,actionPath(page_url,'->') page_url from (
select create_time,account,bfdutmb,page_url page_url from ods_action_event
order by account,bfdutmb,create_time)c
group by account,bfdutmb)b 

 

import org.apache.hadoop.hive.ql.exec.UDAF;
import org.apache.hadoop.hive.ql.exec.UDAFEvaluator;

public class ActionPathUDAF extends UDAF {
	public static class ConcatUDAFEvaluator implements UDAFEvaluator {
		public static class PartialResult {
			String result;
			String delimiter;
		}

		private PartialResult partial;

		public void init() {
			partial = null;
		}

		public boolean iterate(String value, String deli) {

			if (value == null) {
				return true;
			}
			if (partial == null) {
				partial = new PartialResult();
				partial.result = new String("");
				if (deli == null || deli.equals("")) {
					partial.delimiter = new String(",");
				} else {
					partial.delimiter = new String(deli);
				}

			}
			if (partial.result.length() > 0) {
				partial.result = partial.result.concat(partial.delimiter);//result='aa',delimiter='->' | aa->
			}

			partial.result = partial.result.concat(value);
			return true;
		}

		public PartialResult terminatePartial() {
			return partial;
		}

		public boolean merge(PartialResult other) {
			if (other == null) {
				return true;
			}
			if (partial == null) {
				partial = new PartialResult();
				partial.result = new String(other.result);
				partial.delimiter = new String(other.delimiter);
			} else {
				if (partial.result.length() > 0) {
					partial.result = partial.result.concat(partial.delimiter);
				}
				partial.result = partial.result.concat(other.result);
			}
			return true;
		}

		public String terminate() {
			return new String(partial.result);
		}
	}
}

 

分享到:
评论

相关推荐

    hive udaf 实现按位取与或

    总结来说,实现“hive udaf 实现按位取与或”涉及到理解Hive UDAF的工作原理,编写Java代码来定义UDAF,以及在Hive查询中正确地使用这些自定义函数。这不仅增强了Hive的功能,还使得大数据处理更加灵活和高效。

    hive UDF需要jar包

    Hive UDF的实现是基于Java的,因此需要具备Java编程基础。用户需要编写Java类,继承Hive提供的基类,如`org.apache.hadoop.hive.ql.udf.generic.GenericUDF`,并实现其方法来定义函数逻辑。 3. **JAR包依赖**: ...

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

    Apache Hive 是一个基于 Hadoop 的数据仓库工具,用于组织、查询和分析大量数据。它提供了一个SQL-like(HQL,Hive SQL)接口,使得非专业程序员也能方便地处理存储在Hadoop分布式文件系统(HDFS)中的大规模数据集...

    apache-hive-1.2.1源码包(已编译)(含Hive的使用全解)

    Hive可以通过编写自定义函数(UDF, User Defined Function)、UDAF(UDAF, User Defined Aggregate Function)和UDTF(User Defined Table Generating Functions)扩展其功能,满足特定业务需求。 9. **Hive与HBase的...

    hive数仓、hive SQL 、 hive自定义函数 、hive参数深入浅出

    Hive是大数据处理领域中的一个关键组件,它作为基于Hadoop的数据仓库工具,为企业提供了对大规模数据集的SQL-like查询和分析能力。本教程将深入探讨Hive数仓的架构与设计,Hive SQL的基本语法及高级特性,以及如何...

    尚硅谷大数据之Hive视频

    但是,由于描述中提到的信息较为简略,我们将基于“尚硅谷大数据之Hive视频”这一标题,结合Hive的基本概念、应用场景以及学习Hive的重要性等方面进行深入展开。 ### Hive概述 Hive是建立在Hadoop之上的数据仓库...

    大数据面试 Hive 八股文

    6. **Hive的三种自定义函数(UDF、UDTF、UDAF)** - **UDF**:一对一函数,用于基本的数据转换。 - **UDTF**:一对多函数,会产生多行输出。 - **UDAF**:多对一函数,用于聚合操作,如COUNT、SUM。 7. **Hive的...

    apache-hive-0.14.0-bin.tar.gz

    通过Hive,用户可以编写SQL语句来操作HDFS(Hadoop Distributed File System)中的大量数据,无需了解底层的MapReduce或Pig等复杂大数据处理框架。 在"apache-hive-0.14.0-bin"这个压缩包中,包含了以下关键组件和...

    深入浅出学习HIVE.pdf

    Hive是基于Hadoop的一个数据仓库工具,用于将结构化的数据文件映射为数据库表,并提供类SQL查询功能,本质是将SQL转换为MapReduce程序。它是用Java编写,可在Hadoop上运行。Hive可以自由地扩展集群的规模,一般情况...

    Hive-工具篇_hive_

    Hive是Apache软件基金会开发的一款基于Hadoop的数据仓库工具,专为大规模数据集设计,用于存储、管理和处理PB级别的数据。Hive提供了SQL(HiveQL)类似的查询语言,使得非程序员也能方便地进行大数据分析。在本知识...

    Hive编程指南

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

    programming_hive-master.zip

    Hive是Apache软件基金会的一个开源项目,主要用于处理和存储大规模数据集,它是基于Hadoop的数据仓库工具,能够将结构化的数据文件映射为一张数据库表,并提供SQL(HQL)接口进行查询,极大地简化了大数据分析的工作...

    用于hive的实例

    此外,Java还支持编写自定义函数(UDF,User Defined Function)和UDAF(User Defined Aggregate Function)来扩展Hive的功能。通过实现Hive提供的接口,你可以创建自己的函数并注册到Hive中使用。 总的来说,Java...

    Hive是一个基于Hadoop的数据仓库平台

    Hive是一个基于Hadoop的数据仓库平台。Apache Hive (TM) 数据仓库软件有助于读取 编写和管理驻留在分布式存储中的大型数据集 使用 SQL。它建立在 Apache Hadoop (TM) 之上,提供:通过 SQL 轻松访问数据的工具,...

    大数据_Hive_视频_含有笔记

    Hive是一种基于Hadoop的数据仓库工具,旨在为结构化数据提供一种SQL式的查询语言“HiveQL”,同时还能让用户利用MapReduce来处理Hive中的大规模数据集。Hive的主要目标是在大规模数据集上实现简单的数据提取、转换和...

    Cloudera Hive 文档

    9. **Hive UDF(用户自定义函数)**:Hive 允许用户扩展其功能,通过编写 UDF、UDAF(用户自定义聚合函数)和 UDTF(用户自定义表生成函数),满足特定的业务需求。 10. **Hive 与其它大数据组件的整合**:Hive ...

    注册表HIVE操作

    通过编写自定义Hive UDF(用户定义函数)或者UDAF(用户定义聚合函数),开发者可以解析和操作注册表中的数据,将这些数据导入到Hive表中进行分析。 2. **代码实现**: 提供的“详细的代码”很可能是实现了上述...

    dataiku hive udf

    在大数据处理领域,Hive是一个非常重要的组件,它提供了一个基于Hadoop的数据仓库工具,能够将结构化的数据文件映射为一张数据库表,并提供SQL查询功能。Hive UDF(User Defined Functions)则是Hive中扩展其功能的...

    hive_medo_java_hive_

    在IT行业中,Hive是一个基于Hadoop的数据仓库工具,它允许使用SQL(称为HQL,Hive Query Language)对大规模数据集进行分析。Hive由Facebook最初开发,并且现在是Apache软件基金会的一部分,广泛应用于大数据处理...

Global site tag (gtag.js) - Google Analytics