我有一个MapReduce作业,其地图任务使用TextInputFormat。我希望能够在map函数中知道何时到达分割结束(即最后一条记录刚刚传递给map函数)。
我知道有一些内置计数器(例如:Map Input Records计数器,它计算目前由所有映射器消耗的输入记录,但这不是我需要的)。
我可以使用其中一个内置计数器吗?
如果没有,您知道如何在我的地图任务中获取此信息吗?
答案 0 :(得分:4)
您可以将逻辑放在Mapper.cleanup(Context)
方法中(或Mapper.close()
用于旧的mapred api),这是在map方法处理完最后一条记录后调用的。
答案 1 :(得分:1)
我会通过改变ipnut格式的记录阅读器来解决它。这个自定义记录阅读器将保持当前行和下一行(如小预取)。因此,它将知道何时没有更多行并且可以向映射器指示它。