udaf实例

下面例子是自己在实验udaf写法,中间踩了不少坑,写在这里做个笔记

udaf类实现

package com.test.newsevent;

import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;

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

@SuppressWarnings("deprecation")
public class GetNewsTitleInfoStatistics extends UDAF {

	// 记录新闻标题统计信息
	public static class NewsTitleInfo implements Serializable {
		private String title;// 标题名称
		private String url;// url
		private String isCredible;// 新闻来源是否可信 "no":不可靠 "yes":可靠
		private int total;// 该条新闻的总数
		
		public NewsTitleInfo() {
			
		}
		
		public NewsTitleInfo(String title, int total, String isCredible, String url) {
			super();
			this.title = title;
			this.total = total;
			this.isCredible = isCredible;
			this.url = url;
		}
		
		public String getTitle() {
			return title;
		}

		public void setTitle(String title) {
			this.title = title;
		}

		public String getUrl() {
			return url;
		}

		public void setUrl(String url) {
			this.url = url;
		}

		public String getIsCredible() {
			return isCredible;
		}

		public void setIsCredible(String isCredible) {
			this.isCredible = isCredible;
		}

		public int getTotal() 
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spark中的UDAF是指用户自定义聚合函数(User-Defined Aggregate Function)。UDAF允许我们根据自己的业务需求定义一种聚合函数,以便在Spark中进行数据聚合操作。 UDAF有两个主要的使用方式: 1. 在DataFrame中使用UDAF:可以通过在DataFrame中注册UDAF函数来使用UDAF。首先从HDFS中加载数据到DataFrame中,然后注册UDAF函数,比如将所有名字变成大写的UDF函数,接下来创建临时视图,并执行注册的函数来进行数据聚合操作。 2. 在SparkSQL中使用UDAF:在SparkSQL中,虽然没有直接提供UDTF(User-Defined Table-Generating Function)函数,但可以使用flatMap来实现一对多的功能。而UDAF可以在学习Hive的时候使用,当内置函数无法满足业务处理需求时,可以考虑使用UDF函数来自定义处理。 综上所述,Spark中的UDAF允许用户根据自己的业务需求定义聚合函数,并在DataFrame或SparkSQL中使用,以实现数据的聚合操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [【SparkSql篇02】SparkSql之自定义UDF和UDAF函数1](https://download.csdn.net/download/weixin_35738619/86336713)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [SparkSQL中自定义聚合(UDAF)函数](https://blog.csdn.net/onway_goahead/article/details/114808782)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值