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

标签 hadoop amazon-ec2 mapreduce elastic-map-reduce amazon-emr

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

# 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

有关如何使用分布式缓存使二进制文件在工作节点上可访问的说明。

关于hadoop - 在 Amazon MapReduce 上调用已编译的二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9169622/

相关文章:

hadoop - Nifi消耗卡夫卡不接受上游连接

amazon-ec2 - 如何在 Amazon EC2 实例上允许 Socket IO 请求?

ssh - Amazon EC2 Root 登录

java - 将文件位置作为值传递给 hadoop 映射器?

java - 比较字符串或字节数组是否更快?

hadoop - build hadoop3.1.1 failed for CMake test failed on hadoop-yarn-server-nodemanager

macos - 在 Mac OSx 上通过 SSH 连接到 EC2 时出现权限错误

hadoop - 自定义分区器以平衡 reducer 的输入

java - Hadoop MapReduce程序连接到数据库

javascript - 在 Mongo 中重新加入拆分 MapReduce 数组