hive扩展函数开发的实现方法

发布时间:2021-12-01 15:12:59 作者:柒染
来源:亿速云 阅读:119

这期内容当中小编将会给大家带来有关 hive扩展函数开发的实现方法,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

提供以下两种实现方式:a继承org.apache.hadoop.hive.ql.exec.UDF类

代码包为:packageorg.apache.hadoop.hive.ql.udf

实现evaluate方法,根据输入参数和返回参数类型,系统自动转换到匹配的方法实现上。

例如:

•    UDFTestLength.java:

importorg.apache.hadoop.io.IntWritable;

importorg.apache.hadoop.io.Text;

public classUDFTestLength extends UDF {

  IntWritable result = new IntWritable();

  public IntWritable evaluate(Text s) {

    if (s== null) {

      return null;

    }

    result.set(countUDF8Characters(s));

    return result;

  }

}

b继承org.apache.hadoop.hive.ql.udf.generic.GenericUDF类

代码包为:packageorg.apache.hadoop.hive.ql.udf. generic

实现initialize ,evaluate,    getDisplayString方法

例如:

@Description(name = "url_to_map", value = "_FUNC_(text,delimiter1, delimiter2) - "      

public class GenericUDFUrlToMap extends GenericUDF{

HashMap<Object,Object> ret = new HashMap<Object, Object>();

@Override

public ObjectInspector initialize(ObjectInspector[]arguments)

        throwsUDFArgumentException {

     … …

     returnObjectInspectorFactory.getStandardMapObjectInspector(

            PrimitiveObjectInspectorFactory.javaStringObjectInspector,

            PrimitiveObjectInspectorFactory.javaStringObjectInspector);

}

@Override

public Object evaluate(DeferredObject[]arguments) throws HiveException {

     ret.clear();

     … …

     return ret;

}

@Override

public String getDisplayString(String[]children) {

     StringBuildersb = new StringBuilder();

     sb.append("url_to_map(");

     assert (children.length <= 3);

     boolean firstChild = true;

     for (String child :children) {

        if (firstChild) {

            firstChild= false;

        }else {

            sb.append(",");

        }

        sb.append(child);

     }

     sb.append(")");

     return sb.toString();

}

}

上述就是小编为大家分享的 hive扩展函数开发的实现方法了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。

推荐阅读:
  1. PHP7扩展开发之实现简单运算函数
  2. Hive UDAF开发详解

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

hive

上一篇:Python正则表达式特别之处是什么

下一篇:HTTP服务器IIS错误代码有哪些

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》