Types Hadoop流式处理示例失败,映射中的键类型不匹配

Types Hadoop流式处理示例失败,映射中的键类型不匹配,types,hadoop,Types,Hadoop,可能重复: 当我运行Hadoop流媒体示例时,它失败了,因为key from map中的类型不匹配 Hadoop版本0.21.0 输入文件内容: 阿德法德 adfasdflkjlj 命令行:$HADOOP\u HOME/bin/HADOOP jar$HADOOP\u HOME/HADOOP-streaming.jar\ -输入myInputDirs\ -输出myOutputDir\ -mapper org.apache.hadoop.mapred.lib.IdentityMapper\ -减速

可能重复:

当我运行Hadoop流媒体示例时,它失败了,因为key from map中的类型不匹配

Hadoop版本0.21.0 输入文件内容:

阿德法德

adfasdflkjlj

命令行:$HADOOP\u HOME/bin/HADOOP jar$HADOOP\u HOME/HADOOP-streaming.jar\ -输入myInputDirs\ -输出myOutputDir\ -mapper org.apache.hadoop.mapred.lib.IdentityMapper\ -减速器/料仓/厕所

我得到的错误是:

java.lang.Exception:java.io.IOException:map中的键类型不匹配:预期为org.apache.hadoop.io.Text,收到org.apache.hadoop.io.LongWritable


请告知。我做错了什么?谢谢编辑:对不起,我没有意识到这是流媒体。您需要自定义如何将输出拆分为键/值对。文件如下:

错误消息提供了您需要知道的所有信息。映射器被定义为输出长可写键:`mapper`,而Reducer需要文本:`Reducer` 你需要重新定义其中的一个。
编辑:抱歉,没有意识到这是流媒体。您需要自定义如何将输出拆分为键/值对。文件如下:

错误消息提供了您需要知道的所有信息。映射器被定义为输出长可写键:`mapper`,而Reducer需要文本:`Reducer` 你需要重新定义其中的一个。
这是Hadoop发行版中的一个已知错误。它已经在代码中修复,但必须发布。提供了替代解决方案。

这是Hadoop发行版中的一个已知错误。它已经在代码中修复,但必须发布。提供了替代解决方案。

很高兴知道,可以指定自定义输入。虽然总是这样,但键和值之间用制表符分隔。对。具体来说,对于OP的问题,您可能希望执行类似于他们给出的示例的操作:“如果一行少于四个“.”,则整行将是键,值将是空文本对象(如由新文本(“”)创建的对象)其想法是wc只需要几行文本作为输入-它不会对键/值对进行操作。我没有理解要点。甚至我也将输入文件更改为键值对。例如“aa-bb”。它也不起作用。错误是“映射中的键类型不匹配:预期的org.apache.hadoop.io.Text,received org.apache.hadoop.io.LongWritable”,LongWritable到底在哪里?我错过了什么?再看看这个,看起来你应该把wc作为映射器运行,而不是减速器。您预期的输入/输出是什么?你在试着模拟字数吗?如果是这样,您需要运行/bin/cat作为映射程序。很高兴知道,可以指定自定义输入。虽然总是这样,但键和值之间用制表符分隔。对。具体来说,对于OP的问题,您可能希望执行类似于他们给出的示例的操作:“如果一行少于四个“.”,则整行将是键,值将是空文本对象(如由新文本(“”)创建的对象)其想法是wc只需要几行文本作为输入-它不会对键/值对进行操作。我没有理解要点。甚至我也将输入文件更改为键值对。例如“aa-bb”。它也不起作用。错误是“映射中的键类型不匹配:预期的org.apache.hadoop.io.Text,received org.apache.hadoop.io.LongWritable”,LongWritable到底在哪里?我错过了什么?再看看这个,看起来你应该把wc作为映射器运行,而不是减速器。您预期的输入/输出是什么?你在试着模拟字数吗?如果是这样,则需要运行/bin/cat作为映射程序。