首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Camel大型CSV文件处理问题

Camel大型CSV文件处理问题
EN

Stack Overflow用户
提问于 2014-08-01 22:17:56
回答 1查看 541关注 0票数 2

我正在尝试处理一个包含大约100万条记录的大型CSV文件,在读取行(行/行或块)之后,我需要将其推送到camel-flatpack,以创建包含字段名及其值的映射。

我的要求是将所有CSV记录提供给一个扁平打包配置,并从中生成一个java.util.map。

在stackoverflow上有几个帖子通过拆分器来解决这个问题,但我的过程工作得很快,直到有近35000条记录,但此后它就变慢了。

我甚至尝试添加一个油门,它仍然不起作用。我得到了一个GC内存不足的错误。我甚至打开了我的JAVA_MIN_MEMJAVA_MAX_MEMJAVA_PERM_MEMJAVA_MAX_PERM_MEM,但结果是一样的。Hawtio控制台显示,大约5-6分钟后,JAVA_HEAP_MEMORY超过95%。

下面是我的代码片段:

代码语言:javascript
复制
    <route id="poller-route"> 
        <from uri="file://temp/output?noop=true&amp;maxMessagesPerPoll=10&amp;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>
EN

回答 1

Stack Overflow用户

发布于 2014-08-01 22:24:53

一个潜在的问题是,当您创建散列映射并不断向其中添加数据时,它需要重新创建散列。例如,如果我有大小为3的散列,并在其中输入0,1,2, 3,假设我的散列函数是mod 3,那么3将被分配给零槽,从而造成溢出,因此我需要存储溢出或重新创建一个新的散列。

我确信这就是java实现其hashmap的方式,但是您可以尝试将hashmap的初始容量初始化为有多少条记录。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25082291

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档