Java代码编写
public class MyGroupConcat extends UDAF {
public static class MyEvaluator implements UDAFEvaluator{
private Map<String, Double> map;
@Override
public void init() {
map=new TreeMap<String, Double>();
}
public MyEvaluator() {
init();
}
public boolean iterate(String cname,Double score){
if (cname!=null && score!=null){
map.put(cname, score);
}
return true;
}
public Map<String, Double> terminatePartial() {
return map;
}
//执行merge方法之前会先再执行init方法,此时的map是一个新的map,other是之前的旧map。
public boolean merge(Map<String, Double> other){
map.putAll(other);
return true;
}
public List<String> terminate(){
List<String> list = new ArrayList<String>();
for(Entry<String,Double> e:map.entrySet()){
list.add(e.getKey()+"="+e.getValue());
}
return list;
}
}
}