优化MapReduce测试用例
This commit is contained in:
parent
7f2edf0c5f
commit
f8bd156675
@ -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;
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user