是否有人已使用Spring Batch SystemCommandTasklet将大型平面文件拆分为小文件。
我想知道这是一个非常耗时的过程吗?
我们希望将文件拆分为1亿条记录(每条记录包含15个字段)。
请真正感谢您的任何帮助。
此致
香卡
答案 0 :(得分:1)
我在我的演讲JSR-352,Spring Batch和你(https://www.youtube.com/watch?v=yKs4yPs-5yU)中这样做。在那里,我将SystemCommandTasklet
与OS X的split命令结合使用。您可以在此处查看存储库中的示例配置:https://github.com/mminella/jsr352-springbatch-and-you。
具体示例如下:
<bean id="fileSplittingTasklet" class="org.springframework.batch.core.step.tasklet.SystemCommandTasklet" scope="step">
<property name="command" value="split -a 5 -l 10000 #{jobParameters['inputFile']} #{jobParameters['stagingDirectory']}"/>
<property name="timeout" value="60000"/>
<property name="workingDirectory" value="/tmp/jsr_temp"/>
</bean>
这是拆分文件的首选方法。文件系统/操作系统级工具比通过java进程管道文件快得多。