在我的流媒体作业中,我想在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\
但结果是,二进制文件没有执行。我不知道为什么。任何人都可以帮助我
答案 0 :(得分:0)
操作系统中的任意文件不能仅执行,因为其文件格式允许文件可执行(例如,它是本机可执行文件或某些带有#/path/to/interpreter
第一行的脚本。)
您的文件系统(您已将文件添加到其中)必须知道该文件是否有资格通过设置执行权限位来执行。您可以使用chmod命令设置这些位,例如:
chmod +x <path-to-file>