Java UDF最佳实践

为了满足复杂的数据开发场景,Dataphin智能研发版支持自定义Java UDF函数。本教程以Java自带函数(toLowerCase)为例,为您介绍如何基于Dataphin自定义Java UDF函数。

前提条件

已下载JAR包

背景信息

本教程基于下载的JAR包自定义的Java UDF函数,实现大写字母转换为小写字母。您也可以编写Java UDF代码,以实现更多的功能,请参见IntelliJ IDEA Java UDF开发最佳实践

说明

MaxCompute计算类型下若需跨项目引用自定义函数(UDF),即在一个项目引用另外一个项目的UDF,可以使用project_name:function_name。例如在项目test_dev下有自定义函数 to_normal,则在项目xyz_dev下可以通过test_dev:to_normal来使用该函数。

本教程中的JAR包的代码如下。

package org.alidata.odps.udf.examples;
import com.aliyun.odps.udf.UDF;

public final class javaudf extends UDF {
  public String evaluate(String s) {
    if (s == null) {
        return null;
    }
        return s.toLowerCase();
  }
}

其中:

  • JAR包路径为org.alidata.odps.udf.examples

  • class文件名为javaudf

步骤一:上传JAR包

  1. 登录Dataphin控制台

  2. 在Dataphin控制台页面,选择工作区地域后,单击进入Dataphin>>

  3. 进入资源管理页面。

    1. 在Dataphin首页的顶部菜单栏中,选择研发 > 数据研发

    2. 在左侧导航栏中,选择数据处理 > 资源

    3. 在资源列表上方,单击image图标。

  4. 新建资源对话框中,配置以下参数。

    参数

    描述

    类型

    选择jar

    名称

    上传文件的名称需要以文件类型结尾。例如javaudf.jar

    描述

    填写资源的描述。

    上传文件

    选择本地JAR文件,例如javaudf.jar

    计算类型

    选择MaxCompute

    选择目录

    选择用于存放JAR包的目录。系统默认为资源管理,保持默认即可。

  5. 单击提交,完成资源的提交。

  6. 提交备注对话框,填写备注信息。

  7. 单击确定并提交

  8. (可选)发布资源至生产环境。

    • 如果您的开发模式是Dev-Prod模式,则需要发布资源至生产环境,详情请参见管理发布任务

    • 如果您的开发模式是Basic模式,则提交成功的资源,即可进入生产环境。

步骤二:创建MAXC函数

  1. 开发页面的左侧导航栏中,选择数据开发 > 函数

  2. 在函数列表上方单击image图标,选择MAXC函数

  3. 新建函数对话框中,配置以下参数。

    参数

    描述

    名称

    填写函数的名称,例如Java

    选择资源

    选择已上传的资源javaudf.jar

    类名

    类名的格式为JAR包路径.class文件名。填写org.alidata.odps.udf.examples.javaudf

    类型

    函数的类型。选择字符串

    命令格式

    定义引用函数的格式。填写to_char(string i)

    使用文档

    填写函数的使用描述,例如javaudf

    选择目录

    默认为MAXC函数-用户自定义函数,保持默认。

  4. 单击提交,完成资源的提交。

  5. 提交备注对话框,填写备注信息。

  6. 单击确定并提交

  7. (可选)发布函数至生产环境。

    • 如果您的开发模式是Dev-Prod模式,则需要发布函数至生产环境,详情请参见管理发布任务

    • 如果您的开发模式是Basic模式,则提交成功的函数,即可进入生产环境。

步骤三:新建SQL任务

  1. 在开发页面的左侧导航栏中,选择数据处理 > 计算任务

  2. 在计算任务列表上方单击image图标,选择MAX_COMPUTE_SQL

  3. 新建MAX_COMPUTE_SQL任务对话框中,配置以下参数。

    参数

    描述

    名称

    填写计算任务的名称,例如javaudf

    调度类型

    选择任务的调度类型为周期性节点

    选择目录

    系统自动选择为计算任务

    使用模板

    单击开关来选择是否使用模板,若开启使用模板,则还需选择模板模板版本

    描述

    填写对任务的简单描述。

  4. 单击确定

步骤四:使用Java UDF函数

  1. 在SQL任务的代码编写页面,编写代码,例如select java('ABCGDfagHH');

  2. 单击代码编辑区域上方的运行,运行当前代码并查看运行结果。

(可选)调度运维

如果需要定期的运行SQL任务,则需要配置SQL任务的调度参数并发布至生产环境,参与生产环境的调度。

  1. 在代码编写页面,单击右侧边栏的属性

  2. 属性面板中配置调度属性。调度属性配置说明请参见配置逻辑表调度属性

  3. 保存、提交和发布SQL任务。

    1. 单击代码编辑区域上方的保存图标,保存代码。

    2. 单击代码编辑区域上方的提交图标,提交代码。

    3. 提交详情对话框中确认提交内容和前置检查,并填写备注信息。

    4. 单击确定并提交

    5. (可选)发布SQL任务至生产环境。

      • 如果开发模式是Dev-Prod模式,则需要发布SQL任务至生产环境,详情请参见管理发布任务

      • 如果开发模式是Basic模式,则提交成功的SQL任务,即可进入生产环境。