UDTF函数

2020-06-16  本文已影响0人  chen_666
public class CusTag extends GenericUDTF {

    public static final Logger log = LoggerFactory.getLogger(CusTagOperateLogConvert.class);

    private Object[] obj = new Object[2];

    @Override
    public void process(Object[] objects) throws HiveException {
        if(objects == null || objects[0] == null) {
            return;
        }
        String tagInfo = objects[0].toString();
        JsonParser parser = new JsonParser();
        JsonArray jsonArray = parser.parse(tagInfo).getAsJsonArray();
        for(JsonElement jsonElement : jsonArray) {
            JsonObject jsonObject = jsonElement.getAsJsonObject();

            obj[0] = jsonObject.get("tagId").getAsLong();
            obj[1] = jsonObject.get("tagName").getAsString();
        
            forward(obj);
        }
    }

    @Override
    public void close() throws HiveException {
        // do nothing
    }

    @Override
    public StructObjectInspector initialize(StructObjectInspector argOIs) throws UDFArgumentException {
        List<String> colName = Lists.newLinkedList();
        colName.add("tag_id");
        colName.add("tag_name");
        List<ObjectInspector> resType = Lists.newLinkedList();
        resType.add(PrimitiveObjectInspectorFactory.javaLongObjectInspector);
        resType.add(PrimitiveObjectInspectorFactory.javaStringObjectInspector);
        // 返回分别为列名 和 列类型
         return ObjectInspectorFactory.getStandardStructObjectInspector(colName, resType);
    }

}
上一篇 下一篇

猜你喜欢

热点阅读