R语言拥抱大数据时代

日期: 2012-06-04 作者:Timothy Prickett Morgan 来源:TechTarget中国 英文

  R是统计领域广泛使用的诞生于 1980年左右的S语言的一个分支。 R是S语言的一种实现。S语言是由 AT&T贝尔实验室开发的一种用来进行数据探索、统计分析、作图的解释型语言。最初S语言的实现版本主要是S-PLUS。S-PLUS是一个商业软件,它基于S语言,并由MathSoft公司的统计科学部进一步完善。后来Auckland大学的Robert Gentleman 和 Ross Ihaka 及其他志愿人员开发了一个R系统。R的使用与S-PLUS有很多类似之处,两个软件有一定的兼容性。S-PLUS的使用手册,只要经过不多的修改就能成为 R的使用手册。所以有人说:R,是S-PLUS的一个“克隆”。但是请不要忘了:R is free。

  随着信息系统正面临大数据的爆炸式增长,大数据分析需求随之水涨船高,在这股大数据热潮中,开源软件取代商业软件成为舞台的明星,受到人们追捧。2012年,R语言在数据挖掘/分析和可视化应用领域的快速崛起标志着R已经为大数据做好准备。

  在KDNuggets2012年做的“过去与十二个月你在实际项目中使用的数据挖掘/分析工具”的调查中,R以30.7%的得票率荣登榜首,超过微软Excel(29.8%)和Rapidminer(2010和2011年排名第一)。值得注意的是,今年排名前五名的数据挖掘工具中有四个是开源软件。此外R还在击败SQL和Java,在最受欢迎的数据挖掘应用编程语言排行榜中排名第一。

  

  今天每个人都喜欢R,尤其是那些销售数据仓库和Hadoop大数据产品的厂商。无疑,开源是R语言大获成功的一个重要原因,R语言的开发得到了来自统计师和量化分析师社区的大力支持。

  字母家谱

  R与诞生于主机时代的SAS和SPSS的专有工具不同,类似Linux被称为Unix的开源版本,R语言大量借用了S语言的方法。

  1976年John Chambers在贝尔实验室开发的S语言是为了替代昂贵的SPSS和SAS工具。如果说S是VAX和Unix小型机时代的产物,那么R则是PC和Linux时代的产物。

  1996年新西兰奥克兰大学的两位统计学教授——Ross Ihaka和Robert Gentleman发明了R语言,这两位教授也是R开发团队的核心成员,值得注意的是S语言的发明者John Cambers也是R开发团队的成员,因为不难理解R语言的一些数据处理路径与S语言相同。

  R可以看做是S的一种实现,Insightful公司开发的S-PLUS也是S的实现版本,2004年Insightful把S-PLUS授权给了朗讯科技,后来又被Tibco软件于2008年收购。

  革命来临

  与S和S-PLUS不同的是,R并不是象牙塔里炮制出的代码,而是一个由分析师和程序员构成的社区的产物,这个社区为处理各种数据集创建了超过2500个插件。

  今天,根据Revolution Analytics的统计,R被全球超过200万个量化分析师采用。Revolution Analytics成立于2007年,并开发出了R的并行实现,该公司采用了开放内核的方式开发R,为开源软件包退工商业支持,同时扩展R环境,提升其在计算机集群上的表现,并将其与Hadoop集群对接。

  迄今还没有公司将SPSS(2009年被IBM收购)的开源替代品PSPP商业化,但等PSPP进一步成熟,商业化是迟早的事。

  2008年,在拿到英特尔资本的种子投资后,Revolution Analytics开始在R企业版中加入闭源扩展,该做法遭到了R社区的反对。从那以后,Revolution Analytics并行开发了R统计引擎,使之能更好地支持多核多线程处理器和服务器集群;增加了一个类NoSQL的格式——XDF,并增加了对原生SAS文件格式(以及向XDF格式的转换)的支持。

  最近,Revolution Analytics进一步改良R的实现,使每个Hadoop集群的节点都能在本地运行R分析功能处理HDFS系统中的数据,并将计算结果汇总,这有些类似MapReduce对非结构化数据的操作。

  平行宇宙

  为了在与数据仓库领域竞争对手的角逐中占据上风,Netezza于2010年2月开源了Netezza软件栈。

  Netezza是数据仓库一体机的制造商,基于高度定制化和并行化的PostgreSQL数据库。使用FPGA来提升其在x86集群上的性能表现。

  Netezza开放了其软件开发环境,通过一组API允许SAS和R算法并行运行于其数据仓库一体机上。同时还为Java、C++、Fortan和Python等程序提供访问其数据仓库的接口。此外,Netezza通过FPGA,而不是SQL数据查询语言来提取数据仓库中的数据。

  在Netezza开源7个月后,随着大数据商机的逐渐显现,IBM以17亿美元的高价收购了Netezza。

  2010年10月,数据仓库厂商Teradata在其数据仓库产品中增加了数据库内分析组件——TeradataR。这相当于把Teradata的数据仓库挖掘工具变成了R控制台的一个插件,这意味着通过R程序能够调用Teradata数据库里的44种不同的分析功能。

  Teradata拥抱R的方式是保留R控制台,在数据库中并行运行分析,而不是将数据提取到一个工作站然后在本地运行R。

  Oracle加入

  在R化的热潮中,连Oracle都不能免俗。今年二月,Oracle发布了高级分析(Advanced Analytics),为Oracle数据库和R分析引擎之间架起了桥梁。

  Advanced Analytics是Oracle 11g R2 数据库的数据挖掘附件。当R程序员准备运行一个统计路径,他们可以在数据挖掘工具中调用与SQL等同的功能命令,来使用Oracle数据库。

  如果没有对应的SQL功能,植入在各数据库节点的R引擎将运行R路径,汇总分析数据并作为答案返回到R控制台。

  Oracle还为其大数据一体机发布了R Connector for Hadoop,是Cloudera CDH3 Hadoop环境的一个版本,运行在Oracle的Exa系列的x86集群中。该连接器允许R控制台与Oracle大数据一体机上的Hadoop的HDFS文件系统和NoSQL数据库对话。

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

相关推荐