我正在写一个从平面文件中读取的spring批处理,稍做处理并将汇总写入输出文件。与阅读器相比,我的处理器和作者相对更快。我正在使用FlatFileItemReader,并尝试了从50-1000开始的广泛的提交间隔。我的批处理作业必须以更快的速度处理10百万条记录。请让我知道如何提高FlatFileItemReader的速度。粘贴在我的配置文件下面,我的Mapper类读取字段集并将值设置为POJO bean。提前致谢。如何提高SpringBatch中FlatFileItemReader的性能?
BatchFileConfig.xml
<!-- Flat File Item Reader and its dependency configuration starts here -->
<bean id="flatFileReader" class="org.springframework.batch.item.file.FlatFileItemReader">
<property name="resource" value="classpath:flatfiles/input_10KFile.txt" />
<property name="encoding" value="UTF-8" />
<property name="linesToSkip" value="1" />
<property name="lineMapper">
<bean class="org.springframework.batch.item.file.mapping.DefaultLineMapper">
<property name="lineTokenizer">
<bean
class="org.springframework.batch.item.file.transform.DelimitedLineTokenizer">
<property name="names"
value="var1,var2,var3,var4,var5,var6" />
<property name="delimiter" value="	" />
<property name="strict" value="false" />
</bean>
</property>
<property name="fieldSetMapper" ref="companyMapper">
</property>
</bean>
</property>
</bean>
CompanyMapper.java
public Company mapFieldSet(FieldSet fieldSet) throws BindException {
logger.warn("Start time is "+System.currentTimeMillis());
if (fieldSet != null) {
Company company = new Company();
company.setvar1(fieldSet.readString("var1"));
company.setvar2(fieldSet.readInt("var2"));
company.setvar3(fieldSet.readString("var3"));
company.setvar4(fieldSet.readInt("var4"));
company.setvar5(fieldSet.readInt("var5"));
company.setvar6(fieldSet.readInt("var6"));
return company;
}
return null;
}
发布配置和一些代码。很难说,也许你正在做大量的转换(转换为一个对象非常耗时),如果你正在进行切换,这也会带走性能。 –
你的'companyMapper'是什么?你可以在工作配置上多发一点吗? –
感谢您的回复M. Deinum。你能在这里看到任何范围吗? –