0

当我将 snappy 文件读取HDFSmapreduce.

我已经开始 job.setInputFormatClass(TextInputFormat.class); 工作了。

然后我像这样在映射器中获取线值

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。但我在 userlogs 中发现很多错误长度(大于 44)。

然后我打印值new String(value.getBytes)。我发现打印的字符串不是我的预期。行数据不是我保存到 HDFS 的字符串。

数据顺序错误,导致mapper中的值错误。

我能做些什么来解决这个问题。

谢谢!

4

1 回答 1

0

您正在阅读一个 Snappy 压缩文本文件,但您提到了 job.setInputFormatClass(TextInputFormat.class) 这意味着您将阅读一个文本文件。您必须首先将文件解压缩为文本文件,然后您需要在该文件之上运行 MR 作业。

于 2015-04-25T20:17:26.390 回答