I was running $HADOOP_HOME/bin/hadoop jar $HADOOP_HOME/hadoop-streaming.jar \
-D stream.map.output.field.separator=. \
-D stream.num.map.output.key.fields=4 \
-input myInputDirs \
-output myOutputDir \
-mapper org.apache.hadoop.mapred.lib.IdentityMapper \
-reducer org.apache.hadoop.mapred.lib.IdentityReducer
What hould be the input file when IdentityMapper is the mapper?
我希望看到它可以对某些选定的键而不是整个键进行排序。我的输入文件很简单 “aa bb”。 “cc dd” 不确定我错过了什么?我总是得到这个错误 java.lang.Exception:java.io.IOException:键入map中的键不匹配:expected org.apache.hadoop.io.Text,recieved org.apache.hadoop.io.LongWritable 在org.apache.hadoop.mapred.LocalJobRunner $ Job.run(LocalJobRunner.java:371) 引起:java.io.IOException:键入map中的键不匹配:expected org.apache.hadoop.io.Text,recieved org.apache.hadoop.io.LongWritable
答案 0 :(得分:4)
这是一个已知错误,这里是JIRA。这个bug已经在Hadoop 0.21.0中被识别出来了,但我认为它不适用于任何Hadoop发行版本。如果你真的有兴趣解决这个问题,你可以
以下是关于如何应用补丁的instructions。
或者不使用IdentityMapper和IdentityReducder,而是使用python / perl脚本来读取STDIN中的k / v对,然后将相同的k / v对写入STDOUT而不进行任何处理。这就像创建自己的IdentityMapper和不使用Java的IdentityReducder一样。
答案 1 :(得分:0)
我用自己的例子尝试了Hadoop,但得到了同样的错误。我使用KeyValueTextInputFormat来解决问题。您可以查看以下博客。
http://sanketraut.blogspot.in/2012/06/hadoop-example-setting-up-hadoop-on.html
希望它对你有所帮助。
和平。 Sanket Raut