gpt4 book ai didi

java - Spring批处理中只有一半的MongoDB数据库正在处理

转载 作者:IT老高 更新时间:2023-10-28 12:32:09 24 4
gpt4 key购买 nike

我有一个使用 MongoDB 数据库为 MySQL 数据库提供数据的 Spring Boot 批处理。该程序正在处理我大约一半的数据库,但我的日志中只有大约 200 个错误。

BATCH_STEP_EXECUTION 表让我知道过程进展顺利(状态已完成)并显示 READ_COUNT 为 5692,尽管我在数据库中有 11800 个文档。

我是否忘记了配置中的某些内容以防止不遍历整个数据库?

这是我的配置类:

@Configuration
@EnableBatchProcessing
@Import(PersistenceConfig.class)
public class BatchConfiguration {
@Autowired
MongoTemplate mongoTemplate;

@Autowired
SessionFactory sessionFactory;

@Bean
@StepScope
public ItemReader<CourseData> reader() {
MongoItemReader<CourseData> mongoItemReader = new MongoItemReader<>();
mongoItemReader.setTemplate(mongoTemplate);
mongoItemReader.setCollection("foo");
mongoItemReader.setQuery("{}");
mongoItemReader.setTargetType(CourseData.class);
Map<String, Sort.Direction> sort = new HashMap<>();
sort.put("_id", Sort.Direction.ASC);
mongoItemReader.setSort(sort);

return mongoItemReader;
}

@Bean
public ItemProcessor<CourseData, MatrixOne> processor() {
return new CourseDataMatrixOneProcessor();
}

@Bean
public ItemWriter<MatrixOne> writer() {
HibernateItemWriter writer = new HibernateItemWriter();
writer.setSessionFactory(sessionFactory);
System.out.println("writing stuff");
return writer;
}

@Bean
public Job importUserJob(JobBuilderFactory jobs, Step s1) {
return jobs.get("importRawCourseJob")
.incrementer(new RunIdIncrementer())
.flow(s1)
.end()
.build();
}

@Bean
@Transactional
public Step step1(StepBuilderFactory stepBuilderFactory, ItemReader<CourseData> reader, ItemWriter<MatrixOne> writer, ItemProcessor<CourseData, MatrixOne> processor) {
return stepBuilderFactory.get("step1")
.<CourseData, MatrixOne>chunk(10)
.reader(reader)
.processor(processor)
.writer(writer)
.build();
}
}

最佳答案

好的,所以我今天解决了这个问题,当数据出现问题时,我在转换器中返回一个空 POJO 而不是 null。然后我就在处理器中跳过它。

有点奇怪,它不会在遇到第一个 null 时停止。也许 block 元素的一些并行化让我读错了日志

关于java - Spring批处理中只有一半的MongoDB数据库正在处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36486468/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com