Hadoop中的计数器

来源:互联网 发布:八中数据谷实验中学 编辑:程序博客网 时间:2024/04/30 13:21

计数器是用来记录job的执行进度和状态的。它的作用可以理解为日志。我们可以在程序的某个位置插入计数器,记录数据或者进度的变化情况。

1. 内置计数器

我们运行上一章中的例子,看一下计数器的输出内容,如图6-1

clip_image002

图6-1

在图6-1中,计数器有19个,分为四个组:File Output Format Counters、FileSystemCounters、File Input Format Counters和Map—Reduce Framkework。

分组File Input Format Counters包括一个计数器Bytes Read,表示job执行结束后输出文件的内容包括19个字节(空格、换行都是字符),见图5-10-1。

分组File Output Format Counters包括一个计数器Bytes Written,表示job执行时读取的文件内容包括19个字节(空格、换行都是字符),见图5-9-1。

2. 自定义计数器

以上分析的是系统内置的标准计数器。除此之外,我们也可以自己定义计数器使用。在上一章例子中,我们打算在map方法中统计空行记录的数量。代码如图6-2。

clip_image004

图6-2

在图6-2中,我们首先通过Mapper.Context类直接获得计数器对象。这里有两个形参,第一个是计数器组的名称,第二是计数器的名称。然后通过第62行判断是否存在空行。如果有,进入条件判断语句块,调用计数器对象的increment方法。执行输出如图6-3所示。

clip_image005

图6-3

在这里,计数器是20个,多了一个计数器组“Error Rows”,多了一个计数器“Empty Row”。

0 0