2

約 100 万レコードの大きな CSV ファイルを処理しようとしています。行 (行/行またはチャンク) を読み取った後、これをプッシュしてcamel-flatpack、フィールド名とその値を含むマップを作成する必要があります。

私の要件は、すべての CSV レコードをフラットパック構成にフィードし、そこから java.util.map を生成することです。

これをスプリッターで解決するためのスタックオーバーフローに関する投稿がいくつかありましたが、私のプロセスはほぼ 35000 レコードまで高速に動作しますが、その後は遅くなります。

スロットルを追加しようとしましたが、まだ機能しません。GC Out Of Memory エラーが発生します。JAVA_MIN_MEM、 、JAVA_MAX_MEMも撃ちましたJAVA_PERM_MEMJAVA_MAX_PERM_MEM、結果は同じです。Hawtio コンソールは、JAVA_HEAP_MEMORY約 5 ~ 6 分後に 95% 以上であることを示しています。

ここに私のコードスニペットがあります:

    <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>
4

1 に答える 1