码迷,mamicode.com
首页 > 其他好文 > 详细

hive UDAF

时间:2016-02-05 01:42:44      阅读:308      评论:0      收藏:0      [点我收藏+]

标签:

技术分享

java 程序

package com.ibeifeng.udaf;

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

public class Wm_concat extends UDAF {
    
    public static class MYUDAFVAL implements UDAFEvaluator{

        private PartialResult partial = new PartialResult();
        public static class PartialResult{
            String result = "";
            String delilmiter = null;
        }
        @Override
        public void init() {
            // TODO 自动生成的方法存根
            partial.result = "";
            
        }
        public boolean iterate(String value, String deli){
             if(value == null || "null".equalsIgnoreCase(value)){
                 return true;
             }
             if(partial.delilmiter == null){
                 partial.delilmiter = deli;
                 
             }
             if(partial.result.length() > 0){
                 
                 partial.result = partial.result.concat(partial.delilmiter);
                 
             }
             
             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.delilmiter == null){
                  partial.delilmiter = other.delilmiter;
                  partial.result = other.result;
              }else{
                  if(partial.result.length()>0){
                      partial.result = partial.result.concat(partial.delilmiter);
                      
                  }
                  partial.result = partial.result.concat(other.result);
                  
              }
              return true;
             
        }
        public String terminate(){
            
            if(partial == null || partial.result == null){
                
                return null;
            }
            return partial.result;
        }
    }

}

 

hive UDAF

标签:

原文地址:http://www.cnblogs.com/daiyutage/p/5182547.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!