我有一个项目,在Hadoop中使用MapReduce开发一个简单的文档索引。我需要检索FileSplit
函数当前正在处理的map()
的起始位置(如文件开头的字节偏移量)。据我了解,Mapper
给出的输入拆分在逻辑上被RecordReader
拆分为多个部分,每个部分都在map()
之后编辑。
我阅读了FileSplit文档,我尝试过:
((FileSplit) context.getInputSplit()).getStart()
,但这总是返回0.此外,我确信文件在多个部分中分割,因为我进行了一些打印,所以我期待这里和那里的非零值。
有其他人遇到同样的问题吗?我还应该提一下,我对Hadoop的经验不多。
修改
有6个输入文件,每个大约16KB(压缩8KB)。所有文件似乎分为两个(Map input records=12
)。每个Mapper
都会调用map()
两次,但getStart()
次都会返回0。