我的 Spring Boot 批处理应用程序有一个调度程序,它安排我在 FirstBatchConfiguration 类中编写的批处理作业每小时运行一次。
我有另一个批处理作业,我在同一个应用程序的 SecondBatchConfiguration 类中配置了该作业,我将安排该作业每周运行一次,但我无法弄清楚如何在同一个 JobScheduler 中安排它,以便两个作业都应该运行在他们自己安排的时间。
如果有人可以帮助我实现这一目标。
我当前的调度程序是:
@Component
public class JobScheduler {
@Autowired
private JobLauncher jobLauncher;
@Autowired
private FirstBatchConfiguration firstBatchConfiguration;
@Scheduled(cron = "0 0 0/1 * * ?")
public void runJob() {
Map<String, JobParameter> confMap = new HashMap<>();
confMap.put("time", new JobParameter(System.currentTimeMillis()));
JobParameters jobParameters = new JobParameters(confMap);
final Logger logger = LoggerFactory.getLogger("applicationlogger");
try {
jobLauncher.run(firstBatchConfiguration.firstJob(), jobParameters);
} catch (JobExecutionAlreadyRunningException | JobInstanceAlreadyCompleteException
| JobParametersInvalidException | org.springframework.batch.core.repository.JobRestartException e) {
logger.error(e.getMessage());
}
}
}
Run Code Online (Sandbox Code Playgroud) 我想浏览一个文件夹并将文件名中的所有空格替换为下划线。例如,图像“dark green.jpg”将更改为“dark_green.jpg”。我有数百张客户上传到网站的图像需要更改,所以我想要一种对其进行批处理的方法。
有没有一种快速且简单的方法可以做到这一点?它可以在 Photoshop、Bridge 中或仅使用一些本机 Windows 功能。
我使用 MPI 并行化了三个嵌套循环。当我运行代码时,弹出一个错误,显示“srun:错误:无法为作业 20258899 创建步骤:请求的处理器数量超过允许的数量”
这是我用来提交作业的脚本。
#!/bin/bash
#SBATCH --partition=workq
#SBATCH --job-name="code"
#SBATCH --nodes=2
#SBATCH --time=1:00:00
#SBATCH --exclusive
#SBATCH --err=std.err
#SBATCH --output=std.out
#---#
module switch PrgEnv-cray PrgEnv-intel
export OMP_NUM_THREADS=1
#---#
echo "The job "${SLURM_JOB_ID}" is running on "${SLURM_JOB_NODELIST}
#---#
srun --ntasks=1000 --cpus-per-task=${OMP_NUM_THREADS} --hint=nomultithread ./example_parallel
Run Code Online (Sandbox Code Playgroud)
我在下面粘贴我的代码。有人可以告诉我我的代码有什么问题吗?是不是我使用的MPI错误?非常感谢。
PROGRAM THREEDIMENSION
USE MPI
IMPLICIT NONE
INTEGER, PARAMETER :: dp = SELECTED_REAL_KIND(p=15,r=14)
INTEGER :: i, j, k, le(3)
REAL (KIND=dp), ALLOCATABLE :: kp(:,:,:,:), kpt(:,:), col1(:), col2(:)
REAL (KIND=dp) :: su, co, tot
INTEGER :: world_size, world_rank, …Run Code Online (Sandbox Code Playgroud) 我想在批处理文件中嵌套for循环以删除回车.我尝试过就像你可以看到下面但它不起作用.
@echo off
setLocal EnableDelayedExpansion
for /f "tokens=* delims= " %%a in (Listfile.txt) do (
set /a N+=1
set v!N!=%%a
)
for /l %%i in (1, 1, %N%) do (
echo !v%%i!
for /r "tokens=* delims=" %%i in (windows.cpp) do (
echo %%i >> Linux11.cpp
)
)
pause
Run Code Online (Sandbox Code Playgroud)
在这里,我想检查一下windows.cpp.如果它的工作,我喜欢改变Windows .cpp与!v %%我!
如果我有以下xml:
<a>
<b>valA</b>
<b>valB</b>
</a>
<c>
<b>valA</b>
<b>valB</b>
</c>
Run Code Online (Sandbox Code Playgroud)
和以下cmd:
for /f "delims=" %%f in ('dir /b /s server.xml') do (
FOR /F "tokens=2 delims=>" %%i in ('findstr "<a>" %%f') do @echo %%i > temp1.txt
FOR /F "tokens=1 delims=<" %%i in (temp1.txt) do @echo %%i
Run Code Online (Sandbox Code Playgroud)
)
我需要访问节点b的值,但只有我有这样的值时,上述代码才有效
<a>asdf</a>
Run Code Online (Sandbox Code Playgroud)
我只想迭代父元素a
我想要一个将杀死所有chrome.exe进程的批处理文件.我遇到了这个示例:taskkill/im chrome.exe
它只会杀死它找到的chrome.exe的第一个进程.我怎么能循环呢?
I am reading Spring user guide. I came across below statement. I confused by statement "let the framework take care of infrastructure". I mean infrastructure means any Hardware..Nw in Spring Batch is framework, where does infrastructure came in picture
Batch developers use the Spring programming model: concentrate on business logic; let the framework take care of infrastructure
Please help me in understanding/
我很好奇一个人如何设法将读者的所有可用数据向下传递到管道中。
例如,我希望读取器提取所有数据并将整个结果集传递给处理器和写入器。结果集很小,我不担心资源。我以为我已经通过使所有组件(读取器,写入器,处理器)接收并返回已处理项目的集合来正确实现了此目的。
虽然该过程的结果看起来不错,但我看到的是该作业正在读取所有内容,将其向下传递到管道中,然后返回给读取器,读取所有内容并将其向下传递,依此类推。
我已经考虑过创建一个额外的步骤来读取所有数据并将其传递给后续步骤,但是我很好奇我是否可以做到这一点以及如何做到
这份工作看起来像
@Bean
Job job() throws Exception {
return jobs.get("job").start(step1()).build()
}
@Bean
protected Step step1() throws Exception {
return steps.get("step1").chunk(10)
.reader(reader()
.processor(processor()
.writer(writer()).build()
Run Code Online (Sandbox Code Playgroud)
// ....
读者,处理器和作家接受并返回一个列表,例如
class DomainItemProcessor implements ItemProcessor<List<Domain>, List<Domain>>{
Run Code Online (Sandbox Code Playgroud) 我正在做一个我们使用Cassandra的项目,而且我已经陷入了优化点.我们想要改变数据库结构,因为读取操作对Cassandra来说是一个相当大的负载.
我搜索了文档和论坛的答案,但我找不到下面问题的明确答案.
目前我们小批量写入Cassandra,阅读将不断发生.我们希望使批次更大,所以我们可能每10-15分钟左右改变一半.据我所知,Cassandra只在应用写入操作时锁定行.但这是真的吗?或者在写入时锁定整个表格.并且(可能有点愚蠢的问题)你可以在有写锁时阅读吗?(因为当只有一个写锁定权时你有可能仍然可以阅读吗?).
文档没有显示这种流程,这个问题似乎从未被问过.提前致谢!
我有一个工作,从一个\n分隔流中读取数据,并将信息一次发送到xargs处理1行.问题是,这不够高效,但我知道如果我改变程序使得xargs执行的命令一次发送多行而不是一行,它可以大大提高我的脚本的性能.
有没有办法做到这一点?我没有任何运气与各种组合-L或-n.不幸的是,我认为我也坚持-I参数化输入,因为如果我不使用我的命令似乎不想采用标准输入-I.
基本的想法是我正在尝试使用xargs模拟小批量处理.
从概念上讲,这里有类似于我目前所写的内容
contiguous-stream | xargs -d '\n' -n 10 -L 10 -I {} bash -c 'process_line {}'
^在上面,process_line很容易改变,以便它可以同时处理多行,而这个功能现在是瓶颈.对于强调,以上,-n 10并且-L 10似乎没有做任何事情,我行仍在处理一次一个.
batch-processing ×10
batch-file ×3
spring ×3
java ×2
spring-batch ×2
spring-boot ×2
bash ×1
cassandra ×1
cmd ×1
concurrency ×1
filenames ×1
fortran ×1
image ×1
mpi ×1
slurm ×1
xargs ×1
xml ×1