如何使用Eclipse开发工具配合ODPS插件进行Java UDF开发的全流程操作。
准备工作
在开始使用Eclipse开发Java UDF开发之前,您需要做如下准备工作。
- 使用Eclipse安装ODPS插件。
- 创建ODPS Project。
在Eclipse中单击 File > New > ODPS Project输入项目名称,单击 Config ODPS console installation path,配置odpscmd客户端安装路径,如下图。
输入客户端 整体安装包的路径后,单击 Apply。ODPS插件会为您自动解析出客户端Version,如下图。
单击 Finish完成项目创建。
开发步骤
- 步骤1:在ODPS Project中创建Java UDF
在左侧 Package Exploer中右键单击新建的ODPS Java UDF项目,选则 New > UDF,如下图。
输入UDF的Package名称(本例中为com.aliyun.example.udf)和Name(本例中为Upper2Lower),单击 Finish完成UDF创建,如下图。
完成UDF创建后,您可以看到生成了默认Java代码,请注意 不要改变实现evaluate()方法名称。
- 步骤2:实现UDF类文件中的evaluate方法将您想要实现的功能代码写到evaluate方法中,且不要改变evaluate()方法的名称。这里为您简单示例一个大写字母转化为小写字母的功能,如下图。
完成代码后,请及时保存。package com.aliyun.example.udf; import com.aliyun.odps.udf.UDF; public class Upper2Lower extends UDF { public String evaluate(String s) { if (s == null) { return null; } return s.toLowerCase(); } }
测试Java UDF
为了测试Java UDF代码,我们可以首先在MaxCompute上存放一些大写字母作为输入数据。您可以利用odpscmd客户端使用SQL语句 create table upperABC(upper string);
新建一个名为upperABC的测试表格,如下图。
使用SQL语句 insert into upperABC values('ALIYUN');
在表格中插入测试用的大写字母“ALIYUN”。
配置测试参数: Project一栏中填写我们创建的Java ODPS Project名称, Select ODPS project中填写您的MaxCompute项目名称(请注意与odpscmd客户端当前连接的MaxCompute项目保持一致), Table一栏填写我们刚才创建的测试表格名称。完成配置后点击 Run进行测试,如下图。
您可以在下方的 Console中看到测试结果,如下图所示。
说明 测试结果只是Eclipse获取表格中的数据后在本地转换的结果,并不代表MaxCompute中的数据已经转换为小写的aliyun了。
使用Java UDF
确定测试结果正确后,可以开始正式使用Java UDF了,操作步骤如下。- 导出Jar包
在左侧新建的ODPS Project上右键单击,选择 Export,如下图。
在弹框中选择 JAR file,单击 Next,如下图。
在对话框中JAR file处填写Jar包名称,单击 Finish即可导出至当前workspace目录下,如下图。
- 使用DataWorks引用Jar包
登录DataWorks控制台,进入同一个项目(本例中为项目MaxCompute_DOC)的数据开发页面。选择 业务流程 > 资源 > 新建资源 > JAR,新建一个JAR类型资源,如下图。
在弹窗中上传您刚导出的Jar资源,如下图。
刚才只是将Jar资源上传到DataWorks,接下来您需要单击进入Jar资源,单击 提交并解锁(提交)按钮将资源上传至MaxCompute,如下图。
完成上传后,您可以在odpscmd客户端使用 list resources命令查看您上传的Jar资源。 - 创建资源函数
现在Jar资源已经存在于您的MaxCompute项目中了,接下来您需要单击 业务流程 > 函数 > 新建函数,新建一个Jar资源对应的函数,本例中命名函数名称为upperlower_Java。完成后,依次单击 保存和 提交并解锁(提交),如下图。
完成提交后,您可以在odpscmd客户端使用 list functions命令查看已注册的函数。到此,您使用Eclipse开发工具完成注册的Java UDF函数upperlower_Java已经可用了。
使用Java UDF结果验证
打开您的odpscmd命令行界面,运行 select upperlower_Java('ABCD') from dual;
命令,可以观察到该Java UDF已经可以转换字母的大小写了,函数运行正常。