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);
}
}
网友评论