package mobvista.prd.datasource.udf; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import mobvista.prd.datasource.util.GsonUtil; import org.apache.hadoop.hive.ql.exec.UDF; import org.apache.hadoop.io.Text; import java.util.Iterator; import java.util.Map; /** * * Created by fl on 2017/5/17. */ public class GetMaxAgeRange extends UDF { public String evaluate(Text str) { if (str != null) { JsonObject json = GsonUtil.String2JsonObject(str.toString()); JsonObject ageJson = json.get("age_and_proportion").getAsJsonObject(); Iterator<Map.Entry<String, JsonElement>> itr = ageJson.entrySet().iterator(); String age = null; double max = 0.0; Map.Entry<String, JsonElement> entry = null; while (itr.hasNext()) { entry = itr.next(); double temp = entry.getValue().getAsDouble(); if (temp > max) { max = temp; age = entry.getKey(); } } return age; } return null; } }