feat(command): 增加升降级hoodie.properties配置文件的操作
This commit is contained in:
@@ -0,0 +1,80 @@
|
|||||||
|
package com.lanyuanxiaoyao.service.command.commands;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import com.lanyuanxiaoyao.service.configuration.ExecutorProvider;
|
||||||
|
import com.lanyuanxiaoyao.service.forest.service.HudiService;
|
||||||
|
import com.lanyuanxiaoyao.service.forest.service.InfoService;
|
||||||
|
import org.eclipse.collections.api.factory.Lists;
|
||||||
|
import org.eclipse.collections.api.list.MutableList;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.shell.standard.ShellComponent;
|
||||||
|
import org.springframework.shell.standard.ShellMethod;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 工具
|
||||||
|
*
|
||||||
|
* @author lanyuanxiaoyao
|
||||||
|
* @date 2024-05-08
|
||||||
|
*/
|
||||||
|
@SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection")
|
||||||
|
@ShellComponent("额外操作")
|
||||||
|
public class ToolCommand {
|
||||||
|
private static final Logger logger = LoggerFactory.getLogger(ToolCommand.class);
|
||||||
|
|
||||||
|
private final InfoService infoService;
|
||||||
|
private final HudiService hudiService;
|
||||||
|
|
||||||
|
public ToolCommand(InfoService infoService, HudiService hudiService) {
|
||||||
|
this.infoService = infoService;
|
||||||
|
this.hudiService = hudiService;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ShellMethod("升级hoodie.properties")
|
||||||
|
public void upgradeHoodieProperties() {
|
||||||
|
MutableList<String> results = Lists.mutable.empty();
|
||||||
|
infoService.tableMetaList()
|
||||||
|
.asParallel(ExecutorProvider.EXECUTORS, 10)
|
||||||
|
.forEach(meta -> {
|
||||||
|
String hdfs = meta.getHudi().getTargetHdfsPath();
|
||||||
|
if (hudiService.existsPath(hdfs)) {
|
||||||
|
String propertiesPath = StrUtil.format("{}/.hoodie/hoodie.properties", hdfs);
|
||||||
|
String content = hudiService.read(propertiesPath);
|
||||||
|
if (content.contains("org.apache.hudi.common.model.OverwriteWithLatestAvroPayload") && content.contains("org.apache.hudi.keygen.SimpleKeyGenerator")) {
|
||||||
|
content = content.replace("org.apache.hudi.common.model.OverwriteWithLatestAvroPayload", "org.apache.hudi.common.model.TraceOverwriteWithLatestAvroPayload");
|
||||||
|
content = content.replace("org.apache.hudi.keygen.SimpleKeyGenerator", "org.apache.hudi.keygen.DefaultPartitionNameKeyGenerator");
|
||||||
|
hudiService.write(propertiesPath, content, true);
|
||||||
|
logger.info("{} has rewrote", hdfs);
|
||||||
|
results.add(StrUtil.format("{} {}", meta.getJob().getId(), meta.getAlias()));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
logger.warn("{} not found", hdfs);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
logger.info("Result:\n{}", results.makeString("\n"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@ShellMethod("降级hoodie.properties")
|
||||||
|
public void downgradeHoodieProperties() {
|
||||||
|
MutableList<String> results = Lists.mutable.empty();
|
||||||
|
infoService.tableMetaList()
|
||||||
|
.asParallel(ExecutorProvider.EXECUTORS, 10)
|
||||||
|
.forEach(meta -> {
|
||||||
|
String hdfs = meta.getHudi().getTargetHdfsPath();
|
||||||
|
if (hudiService.existsPath(hdfs)) {
|
||||||
|
String propertiesPath = StrUtil.format("{}/.hoodie/hoodie.properties", hdfs);
|
||||||
|
String content = hudiService.read(propertiesPath);
|
||||||
|
if (content.contains("org.apache.hudi.common.model.TraceOverwriteWithLatestAvroPayload") && content.contains("org.apache.hudi.keygen.DefaultPartitionNameKeyGenerator")) {
|
||||||
|
content = content.replace("org.apache.hudi.common.model.TraceOverwriteWithLatestAvroPayload", "org.apache.hudi.common.model.OverwriteWithLatestAvroPayload");
|
||||||
|
content = content.replace("org.apache.hudi.keygen.DefaultPartitionNameKeyGenerator", "org.apache.hudi.keygen.SimpleKeyGenerator");
|
||||||
|
hudiService.write(propertiesPath, content, true);
|
||||||
|
logger.info("{} has rewrote", hdfs);
|
||||||
|
results.add(StrUtil.format("{} {}", meta.getJob().getId(), meta.getAlias()));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
logger.warn("{} not found", hdfs);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
logger.info("Result:\n{}", results.makeString("\n"));
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user