次のような ETL 要件があります。
テーブルから約 20000 レコードをフェッチし、各レコードを個別に処理する必要があります (各レコードの処理には、レコードごとにテーブルを作成してデータを挿入するなどのいくつかの手順が含まれます)。プロトタイプの場合、2 つのジョブ (対応する変換あり) で実装しました。テーブルではなく、単純な空のファイルを作成しました。しかし、この単純なケースもスムーズに機能しないようです。(レコードごとにテーブルを作成すると、ケトルは 5000 回のレコード後に終了します)
これを実行すると、Kettle は遅くなり、2000 ~ 3000 個のファイルの後でハングしますが、Kettle はしばらく停止しているように見えますが、処理は長い時間後に完了します。私の設計アプローチは正しいですか?. ファイルへの書き込みを、IDごとに(SQLスクリプトステップを介して)新しいテーブルを作成し、それにデータを挿入するなどの実際の要件に置き換えると、ケトルは5000レコード後に終了します。フローが機能するために何をする必要がありますか。Java メモリを増やします (Xmx は既に 2GB です)。他に変更できる構成はありますか? それとも他に方法はありますか?余分な時間は制約ではありませんが、流れはうまくいくはずです。
私の最初の推測では、データを保存していないため、少なくともプロトタイプはスムーズに動作するはずです。Kettle 3.2を使用しています。