MongoDB 3.2から大量のデータを読み込んでHadoopに転送する必要のあるJavaアプリケーションがあります。大きなmongodbデータを読む
このバッチアプリケーションは、1日に6回、4時間ごとに実行されます。
データ仕様:
- ドキュメント:時間(4時間ごと)で80000
- サイズ:現在、私はMongoTemplateとMorphiaを使用しています
を3GB MongoDBにアクセスする。 次を使用して、このデータを処理するとき、私はOOM例外を取得しかし:
List<MYClass> datalist = datasource.getCollection("mycollection").find().asList();
このデータを読み、Hadoopのに移入するための最良の方法は何ですか?
MongoTemplate::Stream()
1つずつHadoopに書き込みますか?batchSize(someLimit)
そして、バッチ全体をHadoopに書き込んでください。Cursor.batch()
と1つずつhdfsに書き込みますか?