hive自定义udtf函数
1、添加依赖
2 实现GenericUDTF4.0.0 hive-demoorg.apache.hive hive-exec3.1.2 org.apache.hadoop hadoop-client3.1.3
mport org.apache.hadoop.hive.ql.exec.UDFArgumentException;
import org.apache.hadoop.hive.ql.metadata.HiveException;
import org.apache.hadoop.hive.ql.udf.generic.GenericUDTF;
import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorFactory;
import org.apache.hadoop.hive.serde2.objectinspector.StructObjectInspector;
import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory;
import java.util.ArrayList;
public class MyUDTF extends GenericUDTF {
private ArrayList outPutLists=new ArrayList<>();
@Override
public StructObjectInspector initialize(StructObjectInspector argOIs) throws UDFArgumentException {
ArrayList fieldNames = new ArrayList<>();
fieldNames.add("word");
ArrayList fieldOIs = new ArrayList<>();
fieldOIs.add(PrimitiveObjectInspectorFactory.javaStringObjectInspector);
return ObjectInspectorFactory.getStandardStructObjectInspector(fieldNames,fieldOIs);
}
@Override
public void process(Object[] objects) throws HiveException {
String input = objects[0].toString();
String[] words = input.split(",");
for (String word:words){
outPutLists.clear();
outPutLists.add(word);
forward(outPutLists);
}
}
@Override
public void close() throws HiveException {
}
}
3 测试
1 add jar /opt/module/hive/mylib/hive-demo-1.0-SNAPSHOT.jar
2 create temporary function myudtf as “udf.MyUDTF”;
3 select myudtf(“hello world,haoop,hive,spark,wak”);



