我在电脑上读速写文件时遇到了一个问题 HDFS
至 mapreduce
.
我已经准备好了 job.setInputFormatClass(TextInputFormat.class);
在工作中。
然后我在mapper中得到这样的行值 protected void map(Object key, Text value, Context context) throws IOException, InterruptedException { String[] strs = new String(value.getBytes()).split(String.valueOf(0x09)); LOGGER.info("strs length is " + strs.length); }
如果数据正确,strs长度将为44。但是我在用户日志中发现了很多错误长度(大于44)。
然后我打印值 new String(value.getBytes)
。我发现打印的字符串不是我期望的。行数据不是我保存到hdfs的字符串。
数据顺序错误,导致Map器中的值错误。
我能做些什么来解决这个问题。
谢谢!
1条答案
按热度按时间pnwntuvh1#
您正在读取一个快速压缩的文本文件,但您提到了job.setinputformatclass(textinputformat.class),这意味着您将要读取一个文本文件。你必须先把你的文件解压成文本文件,然后你需要在这个文件上运行你的mr作业。