私の仕事は計算量が多いので、実際には Hadoop の分散機能のみを使用しています。すべての出力を 1 つのファイルにまとめたいので、レデューサーの数を 1 に設定しました。私のレデューサーは実際には何もしていません...
レデューサーの数を明示的に 0 に設定することで、すべての出力が同じ 1 つの出力ファイルに強制的に書き込まれるようにマッパーで制御する方法を教えてください。ありがとう。
Hadoop ではそれができません。マッパーはそれぞれ独立したファイルに書き込む必要があります。これにより、それらが効率的になります (競合やネットワーク転送がなくなります)。これらすべてのファイルを結合する場合は、単一のレデューサーが必要です。または、それらを個別のファイルにして、ダウンロード時にファイルを結合することもできます (たとえば、HDFS のコマンドラインcat
またはgetmerge
オプションを使用)。
編集:あなたのコメントから、あなたが望むのは、レデューサーを書く手間を省くことだと思います。これは間違いなく可能です。これを行うには、 を使用できますIdentityReducer
。その APIはこちらで確認できます。また、0 レデューサーと を使用した場合の説明は、こちらIdentityReducer
で入手できます。
最後に、複数のマッパーが単一の出力を生成することは不可能であると言うとき、HDFS のプレーン ファイルでは不可能であることを意味します。すべてのマッパーが単一のデータベースに書き込むなど、他のタイプの出力でこれを行うことができます。マッパーが多くの出力を生成しない場合は、これで問題ありません。これがどのように機能するかについての詳細は、こちらから入手できます。