如何联合R与Hadoop更好处理大数据!

原创 2016年08月29日 11:30:09

 大数据时代,为了满足用R语言处理PB量级数据的需求,聪明的人们发现了一种便捷的方法,即把已有的2种先进技术合二为一——联合R与Hadoop,这样,R便可拥有在分布式文件系统(HDFS)上处理大数据的能力!以下,大圣众包威客平台将提供联合二者的3种方法的具体操作办法。

  一、使用RHadoop——在MapReduce模式下执行R函数

  作为RevolutionAnalytics下的一个开源库,RHadoop与Rhipe的功能相似——也是在MapReduce模式下执行R函数的。例如,想要连接R和HBase,则可以使用rhbase包中的函数,想要一些函数来连接R和分布式文件系统(HDFS),可以选择rdfs包;想要一些让R和Hadoop联合作业的函数,可以考虑rmr包;想在Hadoop中对大数据集进行一些常用的数据整理操作,可以使用plyrmr包;等等。

  以下,将会举出一个使用rmr包中的函数让R与Hadoop联合作业的例子:

  RHadoop需要对R进行一些设置,并且需要Hadoop集群上一些包的支持,而且RHadoop允许开发者在R函数中定义并调用MapReduce函数。这两点上,与马上将要说的第二种方法“使用Rhipe包”是一样的。

  二、使用Rhipe包——允许用户在R中使用MapReduce

  第二种方法是,让Rhipe包允许用户在R中使用MapReduce。值得注意的是,使用此方法,首先R需要被安装在Hadoop集群中的每一个数据节点上,另外,每个节点还要安装ProtocolBuffers,使得Rhipe在每个节点上都可以被使用。如果选择此方法,比较麻烦的是相应的前期准备工作需要先做好。

  以下,将会举出在R中利用Rhipe包应用MapReduce框架的范例:

  三、使用StreamingAPIs——安装和设置均很方便

  这是3种方法中最为简单的一种。StreamingAPI能够将R语言中的函数传入,并在MapReduce模式下运行这些函数,是Hadoop的特点之一。而且,贴心的是,用户并不需要额外开启客户端之类的东西,因为,这些StreamingAPI可以将任意能在MapReduce模式下访问和操作标准I/O接口的R脚本传入Hadoop中。不过,比较麻烦的是,在执行函数方面,StreamingAPIs需要将函数依次map和reduce。

  请看以下例子:

  条条大路通罗马,以上3种方法只是众多方法中比较简单常用的,用户其实也可以使用ApacheHive、ApacheMahout、Segue框架,与其他来自RevolutionAnalytics的商业版R来实现大规模的机器学习。希望以上的教程,能够让你在大数据业务中不断前进。



版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

大数据相关书籍(包含Java, Scala, R, Linux, Spark, Hadoop, Hive, Hbase, Sqoop, Flume, Strom)

下面书单,有一部分英文版原版,当然价格也相对高一点,英文版部分需要在在亚马逊搜索 ,中文版大部分在京东有售! 《Hadoop核心技术》 翟周伟 著《Storm分布式实时计算模式 》 [美] P.T...

R+Hadoop大数据方案有哪些坑?

摘要: 为什么有些公司在机器学习业务方面倾向使用 R + Hadoop 方案?因为他们在不懂R和Hadoop的特征应用场景的情况下,恰好抓到了一根免费,开源的稻草。R:R的应用场景不在于无与伦比的统计...

hadoop大数据处理例子

R语言ffbase包读取并处理大数据集

R语言中data.table包用于处理大数据集(GB级或TB级),但其无法逃掉内存不足的限制,对于电脑内存只有4G或8G的我们来说会把内存撑爆,不知道你有没有这个体验,真是令人头痛,据说ff包的rea...
  • gtxing
  • gtxing
  • 2016-08-25 12:35
  • 2972

hadoop大数据处理

  • 2015-08-10 22:28
  • 17.82MB
  • 下载

用R处理大数据集

本文翻译自R in Action的附录G,如果对该书感兴趣,请自行购买或去图书馆阅读。 R会把所有的对象读存入虚拟内存中。对我们大多数用户来说,这种设计可以提高与R相互的速度,但是当分析大数据集时,...

Hadoop大数据处理方面的文献

  • 2013-03-30 00:36
  • 19.17MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)