MaxCompute Studio提升UDF和MapReduce开发体验
原文链接:http://click.aliyun.com/m/13990/
UDF全称User Defined Function,即用户自定义函数。MaxCompute提供了很多内建函数来满足用户的计算需求,同时用户还可以创建自定义函数来满足定制的计算需求。用户能扩展的UDF有三种:UDF(User Defined Scalar Function),UDTF(User Defined Table Valued Function)和UDAF(User Defined Aggregation Function)。
同时,MaxCompute也提供了MapReduce编程接口,用户可以使用MapReduce提供的接口(Java API)编写MapReduce程序处理MaxCompute中的数据。
通过MaxCompute Studio提供的端到端的支持,用户能快速开始和熟悉开发自己的UDF和MapReduce,提高效率。下面我们就以一个例子来介绍如何使用Studio来开发自己的UDF:
创建MaxCompute Java Module
首先,你得在intellij中创建一个用于开发MaxCompute Java程序的module。具体的,File | new | module ... module类型为MaxCompute Java,配置Java JDK和MaxCompute console的安装路径,点击next,输入module名,点击finish。
这里配置console的目的主要有两个:
编写UDF和MR需要依赖MaxCompute框架的相关jar,而这些jar在console的lib目录均存在,studio能帮您将这些lib自动导入到module的依赖库中。
studio能集成console,一些动作通过console操作将十分方便。
至此,一个能开发MaxCompute java程序的module已建立,如下图的jDev。主要目录包括:
src(用户开发UDF|MR程序的源码目录)
examples(示例代码目录,包括单测示例,用户可参考这里的例子开发自己的程序或编写单测)
warehouse(本地运行需要的schema和data)
创建UDF
假设我们要实现的UDF需求是将字符串转换为小写(内建函数TOLOWER已实现该逻辑,这里我们只是通过这个简单的需求来示例如何通过studio开发UDF)。studio提供了UDF|UDAF|UDTF|Mapper|Reducer|Driver的模板,这样用户只需要编写自己的业务代码,而框架代码会由模板自动填充。
1. 在src目录右键 new | MaxCompute Java
2. 输入类名,如myudf.MyLower,选择类型,这里我们选择UDF,点击OK。
3. 模板已自动填充框架代码,我们只需要编写将字符串转换成小写的函数代码即可。
测试UDF
UDF或MR开发好后,下一步就是要测试自己的代码,看是否符合预期。studio提供两种测试方式:
单元测试
依赖于MaxCompute提供的Local Run框架,您只需要像写普通的单测那样提供输入数据,断言输出就能方便的测试你自己的UDF或MR。在examples目录下会有各种类型的单测实例,可参考例子编写自己的unit test。这里我们新建一个MyLowerTest的测试类,用于测试我们的MyLower:
sample数据测试
很多用户的需求是能sample部分线上表的数据到本机来测试,而这studio也提供了支持。在editor中UDF类MyLower.java上右键,点击"运行"菜单,弹出run configuration对话框,配置MaxCompute project,table和column,这里我们想将hy_test表的name字段转换为小写:
点击OK后,studio会先通过tunnel自动下载表的sample数据到本地warehouse(如图中高亮的data文件),接着读取指定列的数据并本地运行UDF,用户可以在控制台看到日志输出和结果打印:
发布UDF
好了,我们的MyLower.java测试通过了,接下来我们要将其打包成jar资源(这一步可以通过IDE打包,参考用户手册)上传到MaxComptute服务端上:
1. 在MaxCompute菜单选择Add Resource菜单项:
2. 选择要上传到哪个MaxCompute project上,jar包路径,要注册的资源名,以及当资源或函数已存在时是否强制更新,然后点击OK。
3. jar包上传成功后,接下来就可以注册UDF了,在MaxCompute菜单选择Create Function菜单项。
4. 选择需要使用的资源jar,选择主类(studio会自动解析资源jar中包含的主类供用户选择),输入函数名,然后点击OK。
生产使用
上传成功的jar资源和注册成功的function(在Project Explorer相应project下的Resources和Functions节点中就能及时看到,双击也能显示反编译的源码)就能够实际生产使用了。我们打开studio的sql editor,就能愉快的使用我们刚写好的mylower函数,语法高亮,函数签名显示都不在话下:
MapReduce
studio对MapReduce的开发流程支持与开发UDF基本类似,主要区别有:
MapReduce程序是作用于整张表的,而且输入输出表在Driver中已指定,因此如果使用sample数据测试的话在run configuration里只需要指定project即可。
MapReduce开发好后,只需要打包成jar上传资源即可,没有注册这一步。
对于MapReduce,如果想在生产实际运行,可以通过studio无缝集成的console来完成。具体的,在Project Explorer Window的project上右键,选择Open in Console,然后在console命令行中输入类似如下的命令:
jar -libjars wordcount.jar -classpath D:\odps\clt\wordcount.jar com.aliyun.odps.examples.mr.WordCount wc_in wc_out;
转载于:https://blog.51cto.com/11778640/1906626
最新文章
- 中间人攻击(MITM)姿势总结
- ajax+表单验证+验证码生成例子
- 2016年12-09php函数
- [水煮 ASP.NET Web API2 方法论](3-5)路由约束
- TOM大叔的几道Javascript题目与解答
- 转 基于Quick-cocos2dx 2.2.3 的动态更新实现完整篇。(打包,服务器接口,模块自更新
- mysql 常用操作
- css 去除input 获取焦点的蓝色边框
- Android UI开发第三十四篇——SlidingPaneLayout
- format 对整形的应用
- Hibernate 入门的第一个程序
- Android系统设置— android.provider.Settings
- JDBC事务和JTA事务的区别
- 在SSRS的每一页重复显示table header
- iOS之copy、strong使用,block特性
- c语言环境初始化&;c语言和汇编混合编程
- WIN10远程连接,报错身份验证错误,要求的函数不受支持
- 【转】AlphaGO Zero 原理
- python计算机硬件基础以及变量常量常量池,解释器编译器比较,python的两种运行方式
- 好汉两个半第十二季/全集Two and a Half Men迅雷下载
热门文章
- WeixinJSBridge API使用实例
- readthedocs网托管持多语言文档
- 家庭记账本app进度之下拉框和数字转轮的相关应用
- Java第三十一天,用Properties集合操作IO
- Linux基础篇,系统服务(service)的管理
- 如何将本地项目上传到gitee
- Spring XML Bean 定义的加载和注册
- web自动化测试中的PO模式(一)
- tf.nn.relu6 激活函数
- Thinking in Java,Fourth Edition(Java 编程思想,第四版)学习笔记(一)之Introduction