如何知道Hadoop reducer分配的记录



我使用的是自定义partitioner,它将记录随机分配给减少器。然后减速器开始处理。

在减速器开始工作之前,有没有办法知道每个减速器分配了多少记录??

Partitioner不会随机将记录分配给reducer,它有预定义的逻辑

当我们编写自定义分区程序时,我们编写了记录应该如何在减少程序之间分布的逻辑

例如,如果您正在处理由一个字段年龄组成的数据

您可以决定如何在还原中处理您的输入

首先,你必须为特定的作业配置数量的减速器,可以在地图还原作业的驱动程序中配置

假设您配置了3个减速器。

在编写自定义分区程序时,您将定义例如的逻辑

       if(ageInt <=20){               
            return 0;
        }
        //else if the age is between 20 and 50, assign partition 1
        if(ageInt >20 && ageInt <=50){
            return 1 % numReduceTasks;
        }
        //otherwise assign partition 2
        else
            return 2 % numReduceTasks;

所有那些属于20岁以下的记录都将进入第一减速器。

甚至在执行作业之前,您就可以根据自己的情况统计所有记录的数量。

相关内容

  • 没有找到相关文章

最新更新