diff --git a/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/generator/task/MapReduceTaskGenerator.java b/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/generator/task/MapReduceTaskGenerator.java index 72e2b7f9..7de1fd40 100644 --- a/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/generator/task/MapReduceTaskGenerator.java +++ b/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/generator/task/MapReduceTaskGenerator.java @@ -131,10 +131,15 @@ public class MapReduceTaskGenerator extends AbstractJobTaskGenerator { .eq(JobTask::getLeaf, StatusEnum.YES.getStatus()) ); - // 这里需要判断是否是map - List allMapJobTasks = StreamUtils.toList(jobTasks, JobTask::getResultMessage); + if (CollUtil.isEmpty(jobTasks)) { + return Lists.newArrayList(); + } - List> partition = Lists.partition(allMapJobTasks, reduceParallel); + // 这里需要判断是否是map + // 平均分配map集合, 若reduceParallel > allMapJobTasks.size(), 则取allMapJobTasks.size()作为分片数 + List allMapJobTasks = StreamUtils.toList(jobTasks, JobTask::getResultMessage); + int size = (allMapJobTasks.size() + reduceParallel - 1) / reduceParallel; + List> partition = Lists.partition(allMapJobTasks, size); jobTasks = new ArrayList<>(partition.size()); final List finalJobTasks = jobTasks;