CloverETLツールを使用して100,000行以上の大きなcsvファイルを読み込み、DBテーブルに挿入する前に一部のルックアップ値を変換します。大きなcsvファイルをジョインで処理する際のClover ETLパフォーマンスの問題
基本的に私が使用される:
- を読み取るためのフラット・ファイル・リーダーをファイルに
- 続いて多数のDB
- からいくつかの値を変換するために「ルックアップ参加」を「ExtHashJoin」すべてのデータをリンクします(ソースはソートされていないため)
- 次にレコードをDBに挿入します。
かなり簡単なプロセスであり、少数のレコードでうまく動作します。しかし、ファイル全体をインポートしようとすると、メモリが不足してしまいます(メモリの割り当てを増やすことはできません)。
ExtHashJoinは、すべてのレコードをメモリに保存する必要があるため、挿入しようとする前にすべてのレコードを結合するまで待機しようとしています。私はそのような行動を本当に必要としません。これらのレコードはすべて独立しており、バッチで処理することができます。 1000行ごとに1回ずつ実行しますが、このようにする方法はわかりません。
また、異なるフェーズ値を設定しようとしましたが、最初のレコードの挿入を開始する前に、すべての値を結合しようとします。
フラットファイルリーダーにレコードを分割してバッチ処理する方法を教えてください。
ありがとうございました。
エリック
は答えるために非常に多くのValdiをいただき、ありがとうございます。私はFastSortを配置した後にExtMergeJoinを使用しようとしましたが、今は正常に動作しているようです。 –