1. 什么是Tunnel?
tunnel是用来上传,下载数据用的。用户可以使用tunnel提供的java sdk接口将mysql,oracle的数据导入odps。也可以将odps的数据再导回mysql。通常情况下的商业场景是:用户将白天积攒下来的商业数据(例如淘宝的交易数据)导入odps,然后使用sql,mapreduce,或者是xlib(其实odps不只这几种计算功能,后续会开放更多),对数据进行计算,处理,挖掘。计算出最后的结果后,再将这些结果数据导回到mysql或者oracle。
用户使用tunnel是需要完善reader/writer接口。odps tunnel进提供了抽象的reader writer接口。reader writer的具体工作需要用户自己编写完成,例如实现mysql reader,或oracle writer。此外,上传及下载数据时,还需要创建上传或下载的会话(Session)。
dship工具就是一个tunnel服务的客户端,基于tunnel的sdk实现。dship工具用来读取本地文件,将本地文件内的数据导入odps的表。
关于tunnel最重要的话:本次竞赛没有开放tunnel服务,用户开发的tunnel程序及odps提供的dship工具都无法使用。实际上我们也没给这次大赛提供dship工具。哈哈哈哈哈。
2. ODPS SQL,MapReduce及Xlib的区别?
说下ODPS SQL,MapReduce及Xlab的区别吧。
先说MapReduce,它是一种计算框架,最早由Google提出。大家可以Google下,到处都是介绍,有不少同学批评ODPS的文档写的不好,那就Google吧,哈哈。基于MapReduce的框架概念可以做很多事情,比如说,可以通过MapReduce计算框架完成分布式SQL的实现,当然也可以实现Xlib的部分功能。对于MapReduce计算模型的简单介绍在odps_doc中Mapreduce的开篇有说明,希望对大家有帮助。
但ODPS的mapReduce功能和与ODPS的SQL的关系有点“本末倒置”的意思。ODPS的MapReduce是通过ODPS SQL实现的。我们实际上是将用户写的mapper函数及reduce函数包装成UDTF,并生成对应的SQL,扔到ODPS里去执行的。用户看起来是MapReduce,但实际上是sql。这里面有点绕,正常情况下MapReduce可以用来实现分布式SQL,但我们却用分布式SQL实现MapReduce。为什么会这样呢?你猜呀?
说道ODPS SQL我可先解释上述问题的一部分原因。ODPS的SQL不是基于MapReduce框架实现的,而是另一种更为复杂的图模型计算框架。给大家提供几个关键字"阿里云", “飞天”, “王坚”, “唐宏”,还有“山水”。这个我估计Google搜不到,大家百度吧。关于SQL功能的介绍我会在另一篇贴子里描述。请大家注意看,其实这帖子已经发出来了,但好像没人看,请搜关键字"ODPS大讲堂"。
关于Xlib,这块其实我也不懂,因为不是我做的(其实MR和SQL也不是我做的)。如果说MapReduce是计算框架,SQL是数据处理语言,那么Xlib就是数据处理算法(方法)。Xlib提供了大量的数据处理,包括数据挖掘的方法。比如说逻辑回归,Kmeans,矩阵运算,等等等等。Xlib中的诸多算法有的依赖于MapReduce框架实现,有些据说依赖于SQL实现,只是据说。有些是通过迭代框架实现的。通过迭代实现的算法大家要小心使用,因为迭代算法对集群资源消耗比较严重,你用了,别人就用不了了,小心其他同学骂你,呵呵。走自己的路,让别人无路可走。
大家有什么疑问可以回复这个帖子。我会逐一回复所有人的提问。
-------------------------
-------------------------
-------------------------
-------------------------
-------------------------
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。