Hadoop - 检测输入拆分的最后一条记录

时间:2012-07-09 22:27:37

标签: hadoop built-in

我有一个MapReduce作业,其地图任务使用TextInputFormat。我希望能够在map函数中知道何时到达分割结束(即最后一条记录刚刚传递给map函数)。

我知道有一些内置计数器(例如:Map Input Records计数器,它计算目前由所有映射器消耗的输入记录,但这不是我需要的)。

我可以使用其中一个内置计数器吗?

如果没有,您知道如何在我的地图任务中获取此信息吗?

2 个答案:

答案 0 :(得分:4)

您可以将逻辑放在Mapper.cleanup(Context)方法中(或Mapper.close()用于旧的mapred api),这是在map方法处理完最后一条记录后调用的。

答案 1 :(得分:1)

我会通过改变ipnut格式的记录阅读器来解决它。这个自定义记录阅读器将保持当前行和下一行(如小预取)。因此,它将知道何时没有更多行并且可以向映射器指示它。