获取java中mapreduce的输入和输出数量

rjee0c15  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(480)

我想得到map阶段和reduce阶段的输入和输出的数量,以及用java完成map/reduce作业的时间。这些统计数据是写在终端上的,但我需要用java代码来获取它,并在我自己的接口上编写,就在这行之后:

job_blocking.waitForCompletion(true);
lnxxn5zx

lnxxn5zx1#

在这一行之后,您可以通过获取这些计数器的值来获取map\u input\u记录的数量并减少\u output\u记录(也称为map\u output\u记录):

long map_input_records = job.getCounters()
    .findCounter("org.apache.hadoop.mapreduce.Task$Counter","MAP_INPUT_RECORDS")
    .getValue();
long map_output_records = job.getCounters()
    .findCounter("org.apache.hadoop.mapreduce.Task$Counter","MAP_OUTPUT_RECORDS")
    .getValue();
long reduce_input_records = job.getCounters()
    .findCounter("org.apache.hadoop.mapreduce.Task$Counter","REDUCE_INPUT_RECORDS")
    .getValue();
long reduce_output_records = job.getCounters()
    .findCounter("org.apache.hadoop.mapreduce.Task$Counter","REDUCE_OUTPUT_RECORDS")
    .getValue();

对于运行作业所需的时间,我不知道是否有其他方法(更简单)比使用当前时间设置一个长变量(在执行之前和之后)并获取它们的差异更方便。

相关问题