文档首页 > > 开发指南>

DLI使用UDF操作指导

DLI使用UDF操作指导

分享
更新时间:2020/12/21 GMT+08:00

操作场景

DLI支持用户使用Hive UDF(User Defined Function,用户定义函数)进行数据查询等操作。

  • 在DLI Console上执行UDF相关的操作时,需要使用用户自建的队列。
  • 跨账号使用UDF时,除了创建UDF的用户,其他用户需要先进行授权才可使用对应的UDF。可在管理控制台>数据管理>程序包管理页面,选择对应的UDF jar包,单击“操作”列中的“权限管理”,进入权限管理页面,单击右上角“授权”,勾选对应权限。

操作步骤

  1. 编写UDF。

    根据业务需要新建或修改样例代码中SumUdfDemo.java的内容。具体可以参考样例代码

    图1 新建或修改SumUdfDemo.java的内容
  2. 生成jar包,设置输出jar包为TestUDF.jar,执行Build Artifacts。
    图2 选择Artifacts
    图3 执行Build Artifact

    在对应的路径下会生成一个TestUDF.jar,根据图2,此处的路径为:“udfDemo\target\artifacts\TestUDF”

  3. 上传TestUDF.jar至OBS上。上传数据至OBS可参考提交SQL作业中“步骤2:上传数据至OBS”。
  4. 创建Function。

    在DLI Console上输入下列命令创建Function:

    CREATE FUNCTION fun1 AS 'com.huawei.demo.SumUdfDemo' using jar 'obs://udf/TestUDF.jar';
    • 如果使用已有类名新创建或重新创建FUNTION,则必须在“队列管理”页面重启原有队列,否则FUNCTION有可能不生效。
    • 关于自定义函数的SQL语法介绍请参考《数据湖探索Spark SQL语法参考》。
  5. 使用Function。

    在查询语句中使用4中创建的Function:

    select fun1(ip) from ip_tables;
  6. 删除Function。

    如果不再使用该Function,可执行以下语句删除Function:

    Drop FUNCTION fun1;

样例代码

SumUdfDemo.java中的样例代码如下所示:

package com.huawei.demo;
  import org.apache.hadoop.hive.ql.exec.UDF;
  public class SumUdfDemo extends UDF {
    public int evaluate(int a, int b) {
     return a + b;
  }
 }
分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!非常感谢您的反馈,我们会继续努力做到更好!
反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区论坛频道来与我们联系探讨

智能客服提问云社区提问