我想在Hadoop中处理很多文件 - 每个文件都有一些标题信息,后面跟着很多记录,每个记录以固定的字节数存储。有什么建议吗?
答案 0 :(得分:4)
我认为最好的解决方案是编写自定义InputFormat
。
答案 1 :(得分:1)
有一种解决方案,您可以检查映射器读取的文件行的偏移量。 对于文件中的第一行,它将为零。所以你可以在Map中添加如下行:
public void map(LongWritable key,Text value,Context context)抛出IOException,InterruptedException {
if(key.get() > 0)
{
your mapper code
}
}
因此,它将跳过文件的第一行。
但是,这不是一个好方法,因为这样就会检查文件中每一行的条件。
最好的方法是使用自定义输入格式
答案 2 :(得分:0)
除了编写自定义FileInputFormat之外,您还需要确保该文件不可拆分,以便读者知道如何处理文件中的记录。