UDF api:
https://hive.apache.org/javadocs/r1.2.2/api/org/apache/hadoop/hive/ql/exec/UDF.html
Hive的用户定义函数需要继承UDF类,实现evaluate方法(一个或多个);该方法由hive调用。
Hive解析要调用的方法的确切方式可以通过设置自定义UDFMethodResolver来配置(传入构造器);
定义的UDF类会在每个JVM中实例化出一个实例,并且不会被并发调用。
evaluate方法的返回类型以及方法参数可以是Java原语或相应的Writable类。理论上evaluate不应该返回null值,但是可以把方法设为void。
package hiveudf;
import org.apache.hadoop.hive.ql.exec.Description;
import org.apache.hadoop.hive.ql.exec.UDF;
//Description注解部分提供函数的帮助信息.
@Description(name = "DateToWeek", value = "_FUNC_(date) - Convert yyyyMMdd to yyyyWww.")
public class UDFtime extends UDF {
// evaluate方法的输入输出即是UDF函数的输入输出.
public String evaluate(String date) {
StringBuilder sb = new StringBuilde