UDF
HiveQL
只有几十个内嵌的函数,可以通过编写UDF(User-Defined Function)
来扩展功能
UDF
类必须继承自org.apache.hadoop.hive.ql.exec.UDF
类,并且实现evaluate
方法
编码
# pom.xml
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-exec</artifactId>
<version>${hive.version}</version>
</dependency>
# CaseConversionUdf.java
import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.io.Text;
public class CaseConversionUdf extends UDF {
public Text evaluate(Text text, String model) {
if (model.equals('l')) {
return new Text(text.toString().toLowerCase());
} else {
return new Text(text.toString().toUpperCase());
}
}
}
执行
hive
> add jar /opt/conversion.jar
> create temporary function cconversion
> as "com.icebreakeros.boot.hive.CaseConversionUdf";
> select cconversion(name, 'l') from userinfo;
> drop temporary function cconversion;
网友评论