我正在使用基于MpaReduce
的{{1}},我想跳过数据文件的前六行,所以我使用
hadoop 2.6.0
在我的if(key.get()<6)
return ;
else
{do ....}
。
但这不对。我发现map() function
的{{1}}不是文件行的input key
。关键是每条线的长度之和。为什么?它看起来不像许多书中的文字。
答案 0 :(得分:1)
If you look at the code,它是文件的实际字节偏移量而不是行。
如果你想跳过文件的前n行,你可能需要编写自己的输入格式/记录阅读器,或者确保在mapper logic ala中保留行计数器:
int lines = 0;
public void map(LongWritable key, Text value, ...) {
if(++lines < 6) { return; }
}
如果您拆分文本文件(因此具有&gt; 1映射器),这显然不起作用。因此,编写专用的InputFormat
是解决此问题的最简洁方法。
另一个技巧是测量该特定文件中前n行的字节数,然后在开始时跳过这个字节数。