2014-01-10 149 views
2

我有一个非常初学者的问题。我刚刚阅读了一些关于亚马逊EMR的文档。在我注册之前,我只想问一下在其中使用R。亚马逊EMR:在亚马逊EMR中使用R代码

我有一个R模块调用其他几个模块,然后就在它运行完成之前将多个变量保存为.txt文件。

我最基本的问题是,我可以在亚马逊的EMR中执行此操作吗?我将能够访问.txt输出文件吗?最后,我的R脚本从Excel电子表格中读取一些数据。如果我将Excel文件上传到系统中,它是否仍能够从EMR执行此操作?

感谢

迈克

+0

目前还不清楚emr如何与R脚本启动相关?你知道hadoop是什么以及map-reduce模式的工作原理吗? – alko

+0

@alko,我只知道我最近读了什么。我的理解是,Hadoop和map-reduce模式传播了几台计算机的计算能力(即将进程映射到多台计算机),然后最终将结果汇总到一个系统(即减少它)。它是否正确?从那里,我查看了Amazon EMR系统,这似乎表明可以使用流式集群进程运行R脚本。它是否正确?感谢alko! – Mike

+0

“MapReduce with R on Hadoop和Amazon EMR” - http://www.joyofdata.de/blog/mapreduce-r-hadoop-amazon-emr/ – Raffael

回答

2

@Mike,解答你的3个问题下面

  • EMR上运行R:当然可以。 一旦您在EMR实例上安装了R,您就可以在EMR上运行R程序。如果你打算使用多实例集群,我假设你会编写MapReduce moules。如果你的程序只是一个“简单的”R程序,那么你可能只需要使用一个可调整的实例。我宁愿使用R AMI的EC2实例(寻找Louis Aslett)。

  • 移动输出文件: 是的,你可以。可以将您的程序输出从EMR传输到您选择的S3存储桶。您将不得不添加一个调用S3DistCp命令来移动文件的步骤。从我的项目的例子 -

    --jar /home/hadoop/lib/emr-s3distcp-1.0.jar --args '--src,hdfs:///contents,--dest,s3://<bucket-name>/' 
    
  • 阅读电子表格:据我所知,如果你能做到这一点对本地安装的R,那么你也应该能够做到这一点的EMR。您必须确保在引导过程中安装了必要的软件包/库。

我能够在一个EMR实例安装squeezy-CRAN和rmr2与他们所有的依赖关系(RCPP,reshap2,消化,RJSONIO,功能等)。我仍然无法将R程序作为一个步骤。我不得不使用SSH会话并在shell提示符下运行R CMD命令。在Windows上,putty.exe适合我。

+1

已预安装,对于S3无需进一步措施 - S3已集成与默认的EMR。 – Raffael