全部产品

Java开发

更新时间:2017-06-07 13:26:11

MaxCompute studio能支持用户开发java UDF和MR,在此之前,你得新建一个MaxCompute java module。

新建MaxCompute java module

File | new | module … module类型为MaxCompute Java,配置Java JDK和MaxCompute console的安装路径。若您尚未安装MaxCompute console,可点击这里下载。

配置console目的有两个:

  • a) 开发UDF|MR需依赖相关的jar,而这些jar在console的lib目录都存在。
  • b) studio可以集成console,console能提供很多功能简便的操作,如生产运行MR。

image

点击next,输入module名,点击finish。

MaxCompute java module目录结构

至此,一个能开发MaxCompute java程序的module已建立,如下图的jDev。主要目录包括:

  • src(用户开发java程序源码)
  • examples(示例代码,包括单测示例,用户可参考这里的例子开发或编写UT)
  • warehouse(本地运行时需要的schema和data)

image

MaxCompute java module建好后,即可以开始开发UDF和MR了。具体步骤如下:

开发

  • 1 在src目录右键 new | MaxCompute Java

image

  • 2 输入类名,如myudf.PlusHello,选择类型,这里我们选择UDF,点击OK。

image

  • 3 模板已自动填充框架代码,你只需要编写UDF的入参出参,以及函数逻辑。

image

调试

UDF或MR开发好后,下一步就是要测试自己的代码,看是否符合预期,我们支持两种方式:

单元测试

在examples目录下会有各种类型的单测实例,可参考例子编写自己的UT。

image

下载表的部分sample数据到本地运行

studio也支持下载线上sample数据到本地来测试,进行debug,步骤如下:

  • 1 在editor中UDF类上右键,点击”运行”菜单,弹出run configuration对话框。UDF|UDAF|UDTF一般作用于select子句中表的某些列,因此此处需配置MaxCompute project,table和column(元数据来源于project explorer)。而MR直接作用于表的整行,输入输出表都在driver中已指定,因此只需配置MaxCompute project即可。

image

  • 2 点击ok后,会自动通过MaxCompute tunnel服务下载表的sample数据(最多10000行)到本地的warehouse目录。UDF和MR的local run框架然后会解析warehouse中指定列的数据,喂给Main Class,开始本地运行,用户可以在控制台看到日志输出和结果打印。

image

UDF|MR开发测试完成,接下来就是打包发布到服务器上,供生产运行了。

打包

测试通过后,首先要将将代码打包成jar资源,可以通过IDE或自己写脚本解决,此处我们利用IDEA的打包功能:

  • 1 File | Project Structure | Artifacts | Add

image

  • 2 填写要生成的jar包名称,增加module output,选择我们的java module,点击OK,打包配置已完成。

image

  • 3 选择菜单项 Build | Build Artifacts… | Build 即可以在out/artifacts/目录下生成jar。

上传jar

成功打包后,即可以将该jar包上传到MaxComptute服务端:

  • 1 在MaxCompute菜单选择Add Resource菜单项:

image

  • 2 选择要上传到哪个MaxCompute project上,jar包路径,要注册的资源名,以及当资源或函数已存在时是否强制更新,然后点击OK。

image

  • 3 上传成功后,可以在project explorer窗口的resources节点下看到该资源。

image

注册UDF

jar包已上传,接下来就可以注册UDF了:

  • 1 在MaxCompute菜单选择Create Function菜单项。

image

  • 2 选择需要使用的资源jar,jar的主类,输入函数名,然后点击OK。

image

  • 3 注册成功后,可以在project explorer窗口的functions节点下看到该函数。

image

  • 4 接下来就可以在SQL中愉快的使用新编写的UDF了。

image