手把手教你写Hive&Impala的UDF

目标:自定义实现长度函数

重构length(string) 函数,impala写法要求与hive的不一样,通俗的讲,hive中能执行的udf,impala中不一定能执行

意义

impala中1个汉字长度是3,与hive不统一,不方便使用

操作步骤

1、引包[maven]

对应的hive hadoop版本。

<dependency>
	<groupId>org.apache.hive</groupId>
	<artifactId>hive-exec</artifactId>
	<version>2.1.1</version>
</dependency>

<dependency>
	<groupId>org.apache.hadoop</groupId>
	<artifactId>hadoop-common</artifactId>
	<version>3.0.0</version>
</dependency>

2、编码[code]

package com.xh.hive.udf;

import org.apache.hadoop.hive.ql.exec.UDF;

public class My_length extends UDF {

    public static int evaluate(String data) {
       if(data == null){
           return 0;
       }else{
           return data.length();
       }
    }
}

3、打包[package]

在这里插入图片描述

4、jar包放入hdfs

在这里插入图片描述

5、hive创建函数

CREATE FUNCTION default.my_length AS 'com.xh.hive.udf.My_length' USING JAR '/user/hive/udf/learn-one-learn.jar';

6、impala创建函数

create function default.my_length(string) returns int location '/user/hive/udf/learn-one-learn.jar' symbol='com.xh.hive.udf.My_length';

7、测试

select default.my_length('dd'),default.my_length('许欢') ,length('许欢') 

create table test.xt4 (s string);
insert into test.xt4 values ('123'),('UPPER'),('汉字');
select s,default.my_length(s),length(s) from test.xt4;

引用

hive-UDF
impala-UDF

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值