AWS EMR で実行されている既存の map reduce ジョブがあります。これは、数十億行のログを処理し、いくつかの計算を行ってマッパーから (キー、値) ペアを形成します。これらの計算は非常に時間がかかるため、これらの計算の中間ステップの出力を他のマップ削減ジョブで使用する必要があります。したがって、既存のジョブに影響を与えずに (つまり、現在のマッパーまたはリデューサーを変更せずに)、計算の出力をタップして s3 にアップロードしたいと考えています。アップロードする前に、まずこれらの行をローカルの一時ファイルに集め、ファイルが十分に大きくなったら、このファイルを s3 にアップロードします。
問題は - レデューサーとは異なり、マッパーはキーに基づいてデータをソートできません。ファイル名の競合がないように、異なるマッパーからデータをアップロードするための s3 の一意のファイル名をどのように工夫すればよいですか?
私はJavaを使用しています。マッパークラスターIDを取得するか、ランダム番号を生成する方法があれば、問題も解決できます。すべてのマッパーに固有のもの (やり方がわからない?)