优化MapReduce测试用例

This commit is contained in:
byteblogs168 2024-06-21 16:33:42 +08:00
parent 7f2edf0c5f
commit f8bd156675
2 changed files with 26 additions and 12 deletions

View File

@ -1,15 +1,18 @@
package com.example.snailjob.job; package com.example.snailjob.job;
import com.aizuda.snailjob.client.job.core.dto.MapArgs; import com.aizuda.snailjob.client.job.core.dto.MapArgs;
import com.aizuda.snailjob.client.job.core.dto.MergeReduceArgs;
import com.aizuda.snailjob.client.job.core.dto.ReduceArgs; import com.aizuda.snailjob.client.job.core.dto.ReduceArgs;
import com.aizuda.snailjob.client.job.core.executor.AbstractMapReduceExecutor; import com.aizuda.snailjob.client.job.core.executor.AbstractMapReduceExecutor;
import com.aizuda.snailjob.client.model.ExecuteResult; import com.aizuda.snailjob.client.model.ExecuteResult;
import com.aizuda.snailjob.common.core.util.JsonUtil; import com.aizuda.snailjob.common.core.util.JsonUtil;
import com.example.snailjob.job.TestMapReduceJobExecutor.MonthMap.SubTask; import com.aizuda.snailjob.common.log.SnailJobLog;
import com.example.snailjob.job.TestMapReduceJobExecutor.QuarterMap.SubTask;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.Getter; import lombok.Getter;
import lombok.NoArgsConstructor;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.ArrayList; import java.util.ArrayList;
@ -31,14 +34,20 @@ public class TestMapReduceJobExecutor extends AbstractMapReduceExecutor {
@Override @Override
public ExecuteResult doJobMapExecute(MapArgs mapArgs) { public ExecuteResult doJobMapExecute(MapArgs mapArgs) {
MapEnum mapEnum = MapEnum.ofMap(mapArgs.getTaskName()); MapEnum mapEnum = MapEnum.ofMap(mapArgs.getTaskName());
if (Objects.nonNull(mapEnum)) { if (Objects.nonNull(mapEnum) && Objects.nonNull(mapEnum.getMap())) {
Map map = mapEnum.getMap(); Map map = mapEnum.getMap();
return doMap(map.map(mapArgs), mapEnum.name()); MapEnum nextMap = mapEnum.getNextMap();
String nextName = null;
if (Objects.nonNull(nextMap)) {
nextName = nextMap.name();
}
return doMap(map.map(mapArgs), nextName);
} }
// 未找到map的任务则说明当前需要进行处理 // 未找到map的任务则说明当前需要进行处理
String mapResult = mapArgs.getMapResult(); String mapResult = mapArgs.getMapResult();
SnailJobLog.LOCAL.info("LAST_MAP 开始执行 mapResult:{}", mapResult);
// 获取最后一次map的信息. // 获取最后一次map的信息.
SubTask subTask = JsonUtil.parseObject(mapResult, SubTask.class); SubTask subTask = JsonUtil.parseObject(mapResult, SubTask.class);
// 此处可以统计数据或者做其他的事情 // 此处可以统计数据或者做其他的事情
@ -54,20 +63,24 @@ public class TestMapReduceJobExecutor extends AbstractMapReduceExecutor {
} }
@Override @Override
protected ExecuteResult doMergeReduceExecute(ReduceArgs reduceArgs) { protected ExecuteResult doMergeReduceExecute(MergeReduceArgs reduceArgs) {
return ExecuteResult.success(reduceArgs.getMapResult()); List<?> reduces = reduceArgs.getReduces();
SnailJobLog.LOCAL.info("merge reduce {}", reduces);
return ExecuteResult.success(111);
} }
@Getter @Getter
private enum MapEnum { private enum MapEnum {
MAP_ROOT(new RootMap()), LAST_MAP(null, null),
MONTH_MAP(new MonthMap()) MONTH_MAP(new QuarterMap(), LAST_MAP),
MAP_ROOT(new RootMap(), MONTH_MAP),
; ;
private final Map map; private final Map map;
private final MapEnum nextMap;
MapEnum(Map map) { MapEnum(Map map, MapEnum nextMap) {
this.map = map; this.map = map;
this.nextMap = nextMap;
} }
public static MapEnum ofMap(String taskName) { public static MapEnum ofMap(String taskName) {
@ -93,7 +106,7 @@ public class TestMapReduceJobExecutor extends AbstractMapReduceExecutor {
} }
} }
public static class MonthMap implements Map { public static class QuarterMap implements Map {
@Override @Override
public List map(MapArgs args) { public List map(MapArgs args) {
@ -113,6 +126,7 @@ public class TestMapReduceJobExecutor extends AbstractMapReduceExecutor {
@Data @Data
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor
public static class SubTask { public static class SubTask {
// 商家id // 商家id
private Long id; private Long id;

View File

@ -25,7 +25,7 @@ public class TestWorkflowAnnoJobExecutor {
// 测试上下文传递 // 测试上下文传递
int i = new Random().nextInt(1000); int i = new Random().nextInt(1000);
jobArgs.appendContext("name" + i, "小蜗牛" + i); jobArgs.appendContext("name" + i, "小蜗牛" + i);
jobArgs.appendContext("age", 18); jobArgs.appendContext("age", i);
return ExecuteResult.success(failOrderPo); return ExecuteResult.success(failOrderPo);
} }