无法使用spring批处理读取大文件(8gb)

8xiog9wr  于 2021-07-05  发布在  Java
关注(0)|答案(0)|浏览(317)

我有6000万条记录在一个大约8gb大小的csv中。
需要从文件中读取记录并使用jpa将其插入数据库。
试图用spring批处理读取此文件,但性能非常慢。我已将块大小最大值添加到1500,但行不通。
还添加了创建线程但不起作用的任务执行器。
系统配置。t2。xlarge 16 gib内存和4个vcpu、16gb ram和4核cpu

@Bean
public Step step3() {
    return stepBuilder
            .get("step3")
            .<main_Data, main_Data>chunk(1500)
            .reader(this.mainDataReader)
            .processor(this.main_data_processor)
            .writer(this.mainDataWriter).taskExecutor(taskExecutor())
            .build();
}

@Bean
public  TaskExecutor taskExecutor(){
    SimpleAsyncTaskExecutor simpleAsyncTaskExecutor = new SimpleAsyncTaskExecutor();
    simpleAsyncTaskExecutor.setConcurrencyLimit(5);
    return  simpleAsyncTaskExecutor;
}

也可以尝试

@Bean
public TaskExecutor taskExecutor2() {
   ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
   executor.setCorePoolSize(64);
   executor.setMaxPoolSize(64);
   executor.setQueueCapacity(64);
   executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
   executor.setThreadNamePrefix("MultiThreaded-");
    return executor;
}

我也尝试过使用opencsv,但是使用opencsv获取重复的记录。
对spring批处理的性能有什么建议吗?或者以其他方式阅读这个文件?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题