我在使用Hadoop Streaming时遇到了这些问题。我在python中编写代码
1)聚合库包
根据hadoop流式文档(http://hadoop.apache.org/common/docs/r0.20.0/streaming.html#Working+with+the+Hadoop+Aggregate+Package+%28the+-reduce+aggregate+option%29),有一个内置的Aggregate类,可以作为映射器和reducer使用。
这是命令:
shell> hadoop jar hadoop-streaming.jar -file mapper.py -mapper mapper.py -combiner aggregate -reducer NONE -input input_files -output output_path
执行此命令会导致映射器失败并显示以下错误:
java.io.IOException: Cannot run program "aggregate": java.io.IOException: error=2, No such file or directory
但是,如果使用aggregate作为reducer而不是组合器运行此命令,则作业正常。
shell> hadoop jar hadoop-streaming.jar -file mapper.py -mapper mapper.py -reduce aggregate -reducer NONE -input input_files -output output_path
这是否意味着我不能将聚合类用作组合器?
2)不能使用|作为通用选项的分隔符
这是来自上述链接的示例命令
$HADOOP_HOME/bin/hadoop jar $HADOOP_HOME/hadoop-streaming.jar \
-input myInputDirs \
-output myOutputDir \
-mapper org.apache.hadoop.mapred.lib.IdentityMapper \
-reducer org.apache.hadoop.mapred.lib.IdentityReducer \
-partitioner org.apache.hadoop.mapred.lib.KeyFieldBasedPartitioner \
-D stream.map.output.field.separator=. \
-D stream.num.map.output.key.fields=4 \
-D map.output.key.field.separator=. \
-D mapred.text.key.partitioner.options=-k1,2\
-D mapred.reduce.tasks=12
你不能使用|作为map.output.key.field.separator的参数。错误是
-D: command not found
11/08/03 10:48:02 ERROR streaming.StreamJob: Missing required options: input, output
(更新)你必须逃避|用\喜欢这个
-D stream.map.output.field.separator=\|
3)无法在命令末尾指定-D选项,就像在示例中一样。错误是
-D: command not found
11/08/03 10:50:23 ERROR streaming.StreamJob: Unrecognized option: -D
文档存在缺陷或我做错了什么?
对我所做错的任何见解表示赞赏。日Thnx
答案 0 :(得分:0)
3年前问了这个问题,但今天我仍然遇到了-D选项的问题,所以如果他们遇到同样的问题,我会为其他人添加一些信息。
根据hadoop流媒体手册:
bin/hadoop command [genericOptions] [commandOptions]
-D是一个基本选项,所以你必须把它放在任何其他选项之前。 所以在这种情况下,命令应如下所示:
$HADOOP_HOME/bin/hadoop jar $HADOOP_HOME/hadoop-streaming.jar \
-D stream.map.output.field.separator=. \
-D stream.num.map.output.key.fields=4 \
-D map.output.key.field.separator=. \
-D mapred.text.key.partitioner.options=-k1,2\
-D mapred.reduce.tasks=12
-input myInputDirs \
-output myOutputDir \
-mapper org.apache.hadoop.mapred.lib.IdentityMapper \
-reducer org.apache.hadoop.mapred.lib.IdentityReducer \
-partitioner org.apache.hadoop.mapred.lib.KeyFieldBasedPartitioner \