hadoop-streaming示例无法运行 - 键入地图中的键不匹配

时间:2011-09-28 00:09:06

标签: streaming hadoop

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

2 个答案:

答案 0 :(得分:4)

这是一个已知错误,这里是JIRA。这个bug已经在Hadoop 0.21.0中被识别出来了,但我认为它不适用于任何Hadoop发行版本。如果你真的有兴趣解决这个问题,你可以

  • 下载Hadoop的源代码(适用于您正在使用的版本)
  • 从JIRA下载补丁并将其应用
  • 构建并测试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