步骤冻结。当文件很大时,PoiItemreader 不会读取 excel 文件。有什么建议吗?
Step freeze. PoiItemreader does not read excel file when the file is large. Any suggestion?
我尝试在 Spring 批处理中使用 PoiItemreader 处理一个 excel 文件。当 excel 文件较小或正常大小时,程序运行成功。但是,当我尝试处理更大的文件(大于 12MB)时。该文件根本没有被读取。
我有以下问题:
- 使用 PoiItemreader 的文件大小限制是多少?
- 使用 MultiResourcePartioner 可以解决这个问题吗?
非常感谢。
这是我的代码:
@Configuration
@EnableBatchProcessing
public class BatchConfiguration {
@Autowired
public JobBuilderFactory jobBuilderFactory;
@Autowired
public StepBuilderFactory stepBuilderFactory;
@Bean
public Job csvProcessJob() throws FileNotFoundException {
return jobBuilderFactory.get("csvProcessJob")
.incrementer(new RunIdIncrementer())
.flow(csvProcessStep())
.end()
.build();
}
@Bean
public Step csvProcessStep() throws FileNotFoundException {
return stepBuilderFactory.get("stepCSVprocess")
.<String, Map<String, AttributeValue>> chunk(25)
.reader(excelReader())
.processor(processor())
.writer(writer())
.build();
}
@Bean
public PoiItemReader excelReader() throws FileNotFoundException {
PoiItemReader reader = new PoiItemReader();
reader.setLinesToSkip(1);
reader.setResource(new ClassPathResource("file_name.xls"));
reader.setRowMapper(excelRowMapper());
return reader;
}
private RowMapper<MetaData> excelRowMapper() {
return new MetaDataRowMapper();
}
@Bean
public ItemProcessor<MetaData,Map<String,AttributeValue>> processor() {
return new MapProcessor();
}
@Bean
public ItemWriter writer() {
return new AWSwriter();
}
更新我的问题,我按照评论中的 link 作为 M. Deinum post 并能够将其合并到我自己的自定义 itemreader 中。现在程序 运行 正确,缺点是它只适用于 .xlsx 而不是 .xls
我尝试在 Spring 批处理中使用 PoiItemreader 处理一个 excel 文件。当 excel 文件较小或正常大小时,程序运行成功。但是,当我尝试处理更大的文件(大于 12MB)时。该文件根本没有被读取。
我有以下问题:
- 使用 PoiItemreader 的文件大小限制是多少?
- 使用 MultiResourcePartioner 可以解决这个问题吗?
非常感谢。
这是我的代码:
@Configuration
@EnableBatchProcessing
public class BatchConfiguration {
@Autowired
public JobBuilderFactory jobBuilderFactory;
@Autowired
public StepBuilderFactory stepBuilderFactory;
@Bean
public Job csvProcessJob() throws FileNotFoundException {
return jobBuilderFactory.get("csvProcessJob")
.incrementer(new RunIdIncrementer())
.flow(csvProcessStep())
.end()
.build();
}
@Bean
public Step csvProcessStep() throws FileNotFoundException {
return stepBuilderFactory.get("stepCSVprocess")
.<String, Map<String, AttributeValue>> chunk(25)
.reader(excelReader())
.processor(processor())
.writer(writer())
.build();
}
@Bean
public PoiItemReader excelReader() throws FileNotFoundException {
PoiItemReader reader = new PoiItemReader();
reader.setLinesToSkip(1);
reader.setResource(new ClassPathResource("file_name.xls"));
reader.setRowMapper(excelRowMapper());
return reader;
}
private RowMapper<MetaData> excelRowMapper() {
return new MetaDataRowMapper();
}
@Bean
public ItemProcessor<MetaData,Map<String,AttributeValue>> processor() {
return new MapProcessor();
}
@Bean
public ItemWriter writer() {
return new AWSwriter();
}
更新我的问题,我按照评论中的 link 作为 M. Deinum post 并能够将其合并到我自己的自定义 itemreader 中。现在程序 运行 正确,缺点是它只适用于 .xlsx 而不是 .xls