在Impala中UDF函数的编写以及上传测试

写在前面

      最近在学习Impala,想将学到的Impala知识记录下来,因为需要对Impala查询出的数据字段进行一个字段的规范,impala自带的函数不能够支持,所以需要自己实现一个UDF,来完成对字段的规范。

编写UDF函数

     编写UDF函数,最终打成一个jar包。
import org.apache.hadoop.hive.ql.exec.UDF;

public class DateFormat extends UDF
{
  private static final int ORIGIN_DATE_LENGTH = 29;

  public String evaluate(String originDate)
  {
    if (originDate.length() != 29) {
      return "";
    }

    StringBuilder sb = new StringBuilder();
    sb.append(originDate.substring(15, 19)).append("-")
      .append(originDate
      .substring(19, 21))
      .append("-")
      .append(originDate
      .substring(21, 23))
      .append(" ")
      .append(originDate
      .substring(23, 25))
      .append(":")
      .append(originDate
      .substring(25, 27))
      .append(":")
      .append(originDate
      .substring(27, 29));

    return sb.toString();
  }
}

上传到HDFS上

 create function data_udf(string) returns string location 'hdfs://master:9000/tmp/udf/date.format.jar' symbol='format.DateFormat';

在impala上将函数导入

create function data_udf(string) returns string location 'hdfs://master:9000/tmp/udf/dateformat.jar' symbol='format.DateFormat';


使用UDF查出结果

select data_ud2f(date_time) from track_test03 limit 10



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值