最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

hive复杂UDAF使用方法

来源:懂视网 责编:小采 时间:2020-11-09 13:24:22
文档

hive复杂UDAF使用方法

hive复杂UDAF使用方法:周海汉 /文 2013.3.27 前文《hive mapreduce script用法示例》 示例了mapreduce脚本。本文采用较复杂的方式自定义hive聚合函数。 package com.abloz.hive;/** * @author zhouhh * @date 2013-3-27 * note: for cou
推荐度:
导读hive复杂UDAF使用方法:周海汉 /文 2013.3.27 前文《hive mapreduce script用法示例》 示例了mapreduce脚本。本文采用较复杂的方式自定义hive聚合函数。 package com.abloz.hive;/** * @author zhouhh * @date 2013-3-27 * note: for cou

周海汉 /文 2013.3.27 前文《hive mapreduce script用法示例》 示例了mapreduce脚本。本文采用较复杂的方式自定义hive聚合函数。 package com.abloz.hive;/** * @author zhouhh * @date 2013-3-27 * note: for count value =1 */import org.apache.hadoop.hi

周海汉 /文
2013.3.27

前文《hive mapreduce script用法示例》
示例了mapreduce脚本。本文采用较复杂的方式自定义hive聚合函数。

package com.abloz.hive;
/**
 * @author zhouhh
 * @date 2013-3-27
 * note: for count value >=1
 */
import org.apache.hadoop.hive.ql.exec.UDAF;
import org.apache.hadoop.hive.ql.exec.UDAFEvaluator;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.log4j.Logger;
public class JJPokerStat extends UDAF {
	public static class JJCountUDAFEvaluator implements UDAFEvaluator {
	public static final Logger log = Logger.getLogger(JJPokerStat.class);
	public static class PartialResult {
	int total=0;
	int win=0;
	int fold=0;
	int allin=0;
	}
	private PartialResult result;
	public void init() {
	result = new PartialResult();
	}
	public boolean calwin(int rbet,String chipwon)
	{
	if(chipwon.equalsIgnoreCase("NULL"))
	{
	return false;
	}
	String[] cw = chipwon.split("\\|");
	int chipwons=0;
	//log.info("calwin:"+chipwon);
	for(String v:cw)
	{
	String[] c = v.split(":");
	//log.info("calwin:v "+v+",c.length:"+c.length);
	if(c.length>1)
	{
	chipwons += Integer.parseInt(c[1]);
	}
	}
	//log.info("calwin:chipwons:"+chipwons+",rbet:"+rbet);
	if(chipwons>rbet)
	{
	return true;
	}
	return false;
	}
	public boolean iterate(IntWritable rbet,Text chipwon,IntWritable f,IntWritable a) {
	if ( rbet == null || chipwon == null || f == null || a == null) {
	return true;
	}
	boolean win = calwin(rbet.get(),chipwon.toString());
	if(result == null)
	{
	result = new PartialResult();
	}
	result.total++;
	if(win)
	{
	result.win++;
	}
	int v = f.get();
	if (v>=1)
	{
	result.fold++;
	}
	v = a.get();
	if (v>=1)
	{
	result.allin++;
	}
	return true;
	}
	public PartialResult terminatePartial() {
	return result;
	}
	public boolean merge(PartialResult other) {
	if(other == null)
	{
	return true;
	}
	result.total+=other.total;
	result.win += other.win;
	result.fold += other.fold;
	result.allin += other.allin;
	return true;
	}
	public Text terminate() {
	if(result == null) {
	return new Text("0\t0\t0\t0");
	}
	String s=""+result.total+"\t"+result.win+"\t"+result.fold+"\t"+result.allin;
	return new Text(s);
	}
	}
}

相关博文:

  1. hive mapreduce script用法示例
  2. 手工移除.META.表的错误信息
  3. 编程方式将hbase数据复制到mysql

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文档

hive复杂UDAF使用方法

hive复杂UDAF使用方法:周海汉 /文 2013.3.27 前文《hive mapreduce script用法示例》 示例了mapreduce脚本。本文采用较复杂的方式自定义hive聚合函数。 package com.abloz.hive;/** * @author zhouhh * @date 2013-3-27 * note: for cou
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top