流二进制可执行文件

时间:2012-08-20 09:08:28

标签: python hadoop-streaming

在我的流媒体作业中,我想在mapper中调用可执行文件。这就是这样的

mapper.py

print os.popen('./binary').read()

命令是

$HADOOP_HOME/bin/hadoop fs -rmr $HADOOP_OUTPUT
$HADOOP_HOME/bin/hadoop  streaming \
    -D mapred.map.tasks=$MAP_NUM  \
    -D mapred.reduce.tasks=$RED_NUM \
    -D mapred.job.map.capacity=500  \
    -D mapred.map.capacity.per.tasktracker=1 \
    -input $HADOOP_INPUT \
    -output $HADOOP_OUTPUT \
    -mapper mapper.py  \
    -file mapper.py binary\

但结果是,二进制文件没有执行。我不知道为什么。任何人都可以帮助我

1 个答案:

答案 0 :(得分:0)

操作系统中的任意文件不能仅执行,因为其文件格式允许文件可执行(例如,它是本机可执行文件或某些带有#/path/to/interpreter第一行的脚本。)

您的文件系统(您已将文件添加到其中)必须知道该文件是否有资格通过设置执行权限位来执行。您可以使用chmod命令设置这些位,例如:

chmod +x <path-to-file>