IntelliJ IDEA是Java语言的集成开发环境,可以帮助我们快速的开发Java程序。本文为您详细介绍如何使用IntelliJ IDEA进行Java UDF开发。

前提条件

在开始UDF开发实践之前,您需要做如下准备工作:

开发环境准备完成后即可开发UDF,下面将为您介绍一个大写字母转换为小写字母的UDF实现示例。

说明 更多UDF开发的相关资料请参见Java UDF

操作步骤

  1. 创建Java UDF Project。
    1. 首先在您的IntelliJ IDEA中展开已创建的MaxCompute Java Module目录,导航至src > main > java > New,单击MaxCompute Java
    2. 在弹出的对话框中填写如下参数后,单击OK完成类的创建。
    • Name:填写创建的MaxCompute Java Class名称,输入package名称.文件名。如果还没创建package,可以在此处填写packagename.classname,会自动生成package。
    • Kind:选择类型,选择UDF。目前支持的类型有:自定义函数(UDF/UDAF/UDTF)、MapReduce(Driver/Mapper/Reducer)、非结构化开发(StorageHandler/Extractor)等。
  2. 编辑Java UDF代码。
    在您新建的Java UDF项目(本例中的porjectLower)中编辑代码。示例代码如下。
    package <package名称>;
    import com.aliyun.odps.udf.UDF;
    public class Lower extends UDF {
       public String evaluate(String s) {
          if (s == null) { 
              return null; 
          }
          return s.toLowerCase();
       }
    }
    说明 这里的代码模板可在您的Intellij IDEA中自定义,具体操作路径:Settings > Editor > File Code Templates,然后在Code标签页中寻找MaxCompute对应的模板修改。
  3. 测试UDF。测试UDF有单元测试和本地运行两种方式,查看UDF运行是否符合预期,本文以本地运行举例。
    在IntelliJ IDEA中本地运行UDF时,需要指定运行数据源,有以下两种方式设定测试数据源:
    • MaxCompute Studio通过Tunnel服务自动下载指定项目下的表数据到warehouse目录下。
    • 提供Mock项目及表数据,即您可参考warehouse下的example_project自行设置。
    1. 为了测试Java UDF代码,首先在MaxCompute上存放一些大写字母作为输入数据。通过MaxCompute客户端使用SQL语句create table upperABC(upper string);新建一个名为upperABC的测试表格。
    2. 右击UDF类,单击Run '类名.main()',弹出run configurations对话框。
      说明
      • UDF/UDAF/UDTF一般作用于SELECT子句中表的某些列,需要配置MaxCompute project、table和column(元数据来源于project explorer和warehouse下的Mock项目)。也支持复杂类型的调试。
      • 如果指定项目下的表数据未被下载到warehouse中,需要先下载数据,默认下载100条。如需更多数据,可配置Download record limit项。
      • UDF的local run框架会将warehouse中指定列的数据作为UDF的输入,开始本地运行UDF,您可以在控制台看到日志输出和结果打印。
      • 如果采用Mock项目或已下载数据,则直接运行。
    3. 单击OK,运行结果如下图。
  4. 发布UDF。
    Lower.java测试通过后将其打包成Jar资源上传到MaxCompute服务端上。右键单击UDF的Java文件,选择Deploy to server,弹框里选择注册的MaxCompute project名称,依次输入Function nameResource name
    说明

    如果您想了解打包、上传和注册的详细操作步骤,请参见打包、上传和注册

    填写完成后,单击OK即可完成注册,成功后会有提示。您可在连接的MaxCompute项目下找到已经注册好的Function函数。
  5. 试用UDF。
    在Module项目中打开SQL脚本,执行命令select Lower_test('ALIYUN');,显示结果如下图所示。
    您也可以在MaxCompute客户端使用select Lower_test('ALIYUN') from upperABC;命令测试Java UDF函数。到此,使用IntelliJ IDEA上开发的Java UDF函数Lower_test已经可用了。

后续步骤

如果您想要了解使用Eclipse开发工具完成完整的Java UDF开发流程,请参见Eclipse Java UDF开发最佳实践