我使用自定义分区程序随机分配记录到reducer。然后减速器开始处理。
有没有办法可以知道在reducer开始工作之前为每个reducer分配了多少条记录?
答案 0 :(得分:0)
分区程序不会随机为减速器分配记录,它具有预定义逻辑
当我们编写自定义分区程序时,我们编写逻辑如何在reducers之间分配记录
例如,如果您处理的数据包含一个字段年龄
您可以决定如何在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岁以下的类别的记录都会转到第一个减速器。
即使在执行工作之前,您也可以根据您的情况计算所有记录数。