GetInterestInfo.java 1.21 KB
Newer Older
wang-jinfeng committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
package mobvista.prd.datasource.udf;

import com.google.gson.JsonArray;
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;

/**
 * Created by fl on 2017/5/17.
 */
public class GetInterestInfo extends UDF {
    private StringBuilder builder = new StringBuilder();
    private static final String dataSplit = "\t";

    public String evaluate(Text str) {
        JsonArray array = GsonUtil.String2JsonArray(str.toString());
        for (JsonElement element : array) {
            JsonObject obj = element.getAsJsonObject();
            JsonArray tagArray = obj.get("tag").getAsJsonArray();
            for (JsonElement tagElement : tagArray) {
                JsonObject tagObj = tagElement.getAsJsonObject();
                String firstLevel = tagObj.get("1") != null ? tagObj.get("1").getAsString() : "";
                String sencondLevel = tagObj.get("2") != null ? tagObj.get("2").getAsString() : "";

                builder.setLength(0);
                builder.append(firstLevel).append(dataSplit).append(sencondLevel);
            }
        }
        return builder.toString();
    }
}