我正在尝试处理一个包含大约 100 万条记录的大型 CSV 文件,在读取行(行/行或块)之后,我需要将其推送camel-flatpack
以创建包含字段名称及其值的映射。
我的要求是将所有 CSV 记录提供给 flatpack 配置并从中生成 java.util.map。
stackoverflow 上有几篇文章通过拆分器解决了这个问题,但我的过程运行速度很快,直到近 35000 条记录,但此后速度变慢。
我什至尝试添加一个节流器,它仍然不起作用。我收到 GC 内存不足错误。我什至把我的JAVA_MIN_MEM
, JAVA_MAX_MEM
, JAVA_PERM_MEM
,JAVA_MAX_PERM_MEM
但结果是一样的。Hawtio 控制台显示JAVA_HEAP_MEMORY
大约 5-6 分钟后超过 95%。
这是我的代码片段:
<route id="poller-route">
<from uri="file://temp/output?noop=true&maxMessagesPerPoll=10&delay=5000"/>
<split streaming="true" stopOnException="false">
<tokenize token="\n" />
<to uri="flatpack:delim:flatpackConfig/flatPackConfig.pzmap.xml?ignoreFirstRecord=false"/>
</split>
</route>
<route id="output-route">
<from uri="flatpack:delim:flatpackConfig/flatPackConfig.pzmap.xml?ignoreFirstRecord=false"/>
<convertBodyTo type="java.util.Map"/>
<to uri="mock:result"/>
</route>