feature(web): 增加批量增加压缩调度
This commit is contained in:
@@ -0,0 +1,9 @@
|
|||||||
|
package com.lanyuanxiaoyao.service.configuration;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author lanyuanxiaoyao
|
||||||
|
* @date 2023-07-06
|
||||||
|
*/
|
||||||
|
public interface Constants {
|
||||||
|
String SERVICE_NAME_INFO_QUERY = "info-query";
|
||||||
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
package com.lanyuanxiaoyao.service.configuration.exception;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Hudi 服务异常
|
||||||
|
*
|
||||||
|
* @author lanyuanxiaoyao
|
||||||
|
* @date 2023-07-06
|
||||||
|
*/
|
||||||
|
public class HudiServiceException extends Exception {
|
||||||
|
public HudiServiceException(String serviceName) {
|
||||||
|
super(StrUtil.format("[{}] cause exception", serviceName));
|
||||||
|
}
|
||||||
|
|
||||||
|
public HudiServiceException(String serviceName, String message) {
|
||||||
|
super(StrUtil.format("[{}] {}", serviceName, message));
|
||||||
|
}
|
||||||
|
|
||||||
|
public HudiServiceException(String serviceName, String message, Throwable cause) {
|
||||||
|
super(StrUtil.format("[{}] {}", serviceName, message), cause);
|
||||||
|
}
|
||||||
|
|
||||||
|
public HudiServiceException(String serviceName, Throwable cause) {
|
||||||
|
super(StrUtil.format("[{}] cause exception"), cause);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
package com.lanyuanxiaoyao.service.configuration.exception;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author lanyuanxiaoyao
|
||||||
|
* @date 2023-07-06
|
||||||
|
*/
|
||||||
|
public class TableNotFoundException extends HudiServiceException {
|
||||||
|
public TableNotFoundException(String serviceName, Long flinkJobId, String alias) {
|
||||||
|
super(serviceName, StrUtil.format("Table {} {} is not found", flinkJobId, alias));
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -2,7 +2,10 @@ package com.lanyuanxiaoyao.service.web.controller;
|
|||||||
|
|
||||||
import cn.hutool.core.map.MapUtil;
|
import cn.hutool.core.map.MapUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import com.lanyuanxiaoyao.service.configuration.Constants;
|
||||||
import com.lanyuanxiaoyao.service.configuration.entity.AmisResponse;
|
import com.lanyuanxiaoyao.service.configuration.entity.AmisResponse;
|
||||||
|
import com.lanyuanxiaoyao.service.configuration.exception.TableNotFoundException;
|
||||||
|
import com.lanyuanxiaoyao.service.forest.service.InfoService;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import org.eclipse.collections.api.factory.Maps;
|
import org.eclipse.collections.api.factory.Maps;
|
||||||
@@ -92,4 +95,10 @@ public class BaseController {
|
|||||||
}
|
}
|
||||||
return queryMap;
|
return queryMap;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void checkTableExists(InfoService infoService, Long flinkJobId, String alias) throws TableNotFoundException {
|
||||||
|
if (infoService.nonExistsTable(flinkJobId, alias)) {
|
||||||
|
throw new TableNotFoundException(Constants.SERVICE_NAME_INFO_QUERY, flinkJobId, alias);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,62 @@
|
|||||||
|
package com.lanyuanxiaoyao.service.web.controller;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.ReUtil;
|
||||||
|
import com.dtflys.forest.annotation.Get;
|
||||||
|
import com.lanyuanxiaoyao.service.configuration.entity.info.JobIdAndAlias;
|
||||||
|
import com.lanyuanxiaoyao.service.configuration.exception.TableNotFoundException;
|
||||||
|
import com.lanyuanxiaoyao.service.forest.service.InfoService;
|
||||||
|
import com.lanyuanxiaoyao.service.forest.service.ScheduleService;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
import org.eclipse.collections.api.factory.Lists;
|
||||||
|
import org.eclipse.collections.api.list.ImmutableList;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 调度
|
||||||
|
*
|
||||||
|
* @author lanyuanxiaoyao
|
||||||
|
* @date 2023-07-06
|
||||||
|
*/
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("schedule")
|
||||||
|
public class ScheduleController extends BaseController {
|
||||||
|
private static final Logger logger = LoggerFactory.getLogger(ScheduleController.class);
|
||||||
|
|
||||||
|
private final ScheduleService scheduleService;
|
||||||
|
private final InfoService infoService;
|
||||||
|
|
||||||
|
@SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection")
|
||||||
|
public ScheduleController(ScheduleService scheduleService, InfoService infoService) {
|
||||||
|
this.scheduleService = scheduleService;
|
||||||
|
this.infoService = infoService;
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("table_batch")
|
||||||
|
public void tableBatch(@RequestParam("lines") String lines) throws TableNotFoundException {
|
||||||
|
Pattern p = Pattern.compile("^(\\d+)\\s*(\\S+)$");
|
||||||
|
ImmutableList<JobIdAndAlias> jobIdAndAliases = Lists.immutable.of(lines.trim().split("\n"))
|
||||||
|
.collect(line -> {
|
||||||
|
Long flinkJobId = Long.valueOf(ReUtil.get(p, line, 1));
|
||||||
|
String alias = ReUtil.get(p, line, 2);
|
||||||
|
return new JobIdAndAlias(flinkJobId, alias);
|
||||||
|
});
|
||||||
|
for (JobIdAndAlias jobIdAndAlias : jobIdAndAliases) {
|
||||||
|
checkTableExists(infoService, jobIdAndAlias.getId(), jobIdAndAlias.getAlias());
|
||||||
|
}
|
||||||
|
jobIdAndAliases.forEach(item -> scheduleService.scheduleTable(item.getId(), item.getAlias()));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Get("table")
|
||||||
|
public void table(
|
||||||
|
@RequestParam("flink_job_id") Long flinkJobId,
|
||||||
|
@RequestParam("alias") String alias
|
||||||
|
) throws TableNotFoundException {
|
||||||
|
checkTableExists(infoService, flinkJobId, alias);
|
||||||
|
scheduleService.scheduleTable(flinkJobId, alias);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -5,10 +5,6 @@ function toolTab() {
|
|||||||
{
|
{
|
||||||
type: 'form',
|
type: 'form',
|
||||||
title: '查询时间线',
|
title: '查询时间线',
|
||||||
mode: 'horizontal',
|
|
||||||
horizontal: {
|
|
||||||
leftFixed: 'md',
|
|
||||||
},
|
|
||||||
actions: [
|
actions: [
|
||||||
{
|
{
|
||||||
type: 'submit',
|
type: 'submit',
|
||||||
@@ -54,10 +50,31 @@ function toolTab() {
|
|||||||
name: 'hdfs',
|
name: 'hdfs',
|
||||||
label: '表HDFS路经',
|
label: '表HDFS路经',
|
||||||
required: true,
|
required: true,
|
||||||
|
clearable: true,
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'form',
|
||||||
|
title: '批量提交压缩任务',
|
||||||
|
api: {
|
||||||
|
method: 'post',
|
||||||
|
url: '${base}/schedule/table_batch',
|
||||||
|
dataType: 'form',
|
||||||
|
},
|
||||||
|
body: [
|
||||||
|
{
|
||||||
|
name: 'lines',
|
||||||
|
type: 'textarea',
|
||||||
|
label: '表信息 (flink_job_id alias\\n)',
|
||||||
|
clearable: true,
|
||||||
|
minRows: 5,
|
||||||
|
maxRows: 5,
|
||||||
|
className: 'no-resize',
|
||||||
|
required: true,
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{type: 'divider'},
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user