hive自定函数 UDF使用

1. Hive 自带了一些函数,比如:max/min等,当Hive提供的内置函数无法满足你的业务处理需要时,此时就可以考虑使用用户自定义函数(UDF).
2. 根据用户自定义函数类别分为以下三种:
   1. UDF(User-Defined-Function)
      - 一进一出  
   2. UDAF(User-Defined Aggregation Function)
      - 聚集函数,多进一出
      - 类似于:`count`/`max`/`min`
   3. UDTF(User-Defined Table-Generating Functions)
      - 一进多出
      - 如 `lateral` `view` `explore()`
3. 编程步骤:
   1. 继承org.apache.hadoop.hive.ql.UDF
   2. 需要实现evaluate函数;evaluate函数支持重载;
4. 注意事项
   1. UDF必须要有返回类型,可以返回null,但是返回类型不能为void;
   2. UDF中常用Text/LongWritable等类型,不推荐使用java类型;
   
   实例
   ##### Step 1 创建 Maven 工程
<dependencies>
    <!-- https://mvnrepository.com/artifact/org.apache.hive/hive-exec -->
    <dependency>
        <groupId>org.apache.hive</groupId>
        <artifactId>hive-exec</artifactId>
        <version>2.7.5</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-common -->
    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-common</artifactId>
        <version>2.7.5</version>
    </dependency>
</dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.0</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
        </plugins>
    </build>
Step 2 开发 Java 类集成 UDF
public class MyUDF  extends UDF{
    public Text evaluate(final Text str){
        String tmp_str = str.toString();
        if(str != null && !tmp_str.equals("")){
          String str_ret =   tmp_str.substring(0, 1).toUpperCase() + tmp_str.substring(1);
          return  new Text(str_ret);
        }
        return  new Text("");
    }
}

Step 3 项目打包,并上传到hive的lib目录下
Step 4 添加jar包

重命名我们的jar包名称

cd /export/servers/apache-hive-2.7.5-bin/lib
mv original-day_10_hive_udf-1.0-SNAPSHOT.jar my_upper.jar

hive的客户端添加我们的jar包

add jar /export/servers/apache-hive-2.7.5-bin/lib/my_upper.jar;
Step 5 设置函数与我们的自定义函数关联
create temporary function my_upper as 'cn.itcast.udf.ItcastUDF';
Step 6 使用自定义函数
select my_upper('abc');
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值