在Amazon MapReduce上调用已编译的二进制文件

在Amazon MapReduce上调用已编译的二进制文件

问题描述:

我正在尝试对Amazon Elastic MapReduce进行一些数据分析。映射器步骤是一个python脚本,它包含对称为“./formatData”的已编译C++二进制文件的调用。例如:在Amazon MapReduce上调用已编译的二进制文件

# myMapper.py 
from subprocess import * 
inputData = sys.stdin.readline() 
# ... 
p1 = Popen('./formatData', stdin=PIPE, stdout=PIPE) 
p1Output = p1.communicate(input=inputData) 
result = ... # manipulate the formatted data 
print "%s\t%s" % (result,1) 

我可以在Amazon EMR上调用这样的二进制可执行文件吗?如果是这样,我将在哪里存储二进制文件(在S3中),我应该编译什么平台,以及如何确保我的映射器脚本可以访问它(理想情况下,它将位于当前工作目录中)。

谢谢!

如果确保将二进制文件正确复制到工作节点,则可以用这种方式调用二进制文件。

请参见:

https://forums.aws.amazon.com/thread.jspa?threadID=35158

有关如何使用分布式缓存,使二进制文件的工人节点*问一个解释。

+0

谢谢。另外,我应该编译什么平台? – tba 2012-02-07 01:23:10

+0

Linux(弹性map-reduce在Amazon Linux上运行)。 – gwt 2012-02-07 01:52:05

+1

在任何旧版Linux机器上构建都不行,所以我发现这个指南是建立在EMR上的:http://docs.amazonwebservices.com/ElasticMapReduce/latest/DeveloperGuide/usingemr_buildingmodules.html – tba 2012-02-07 05:10:30