私はhadoopが初めてです。Hadoop でデータを処理するためのファイルを含むフォルダーが複数あります。map-reducer アルゴリズムにマッパーを実装することに疑いがあります。複数のファイルを処理するために複数のマッパーを指定し、単一のレデューサーを使用してすべての入力ファイルを 1 つの出力として使用できますか? 可能であれば、上記の手順を実装するためのガイドラインを教えてください。
質問する
847 次
2 に答える
1
ファイルを同じ方法でマッピングする場合(たとえば、すべてのファイルの形式と処理要件が同じ場合)、すべてを処理するように単一のマッパーを構成できます。
これを行うには、TextInputFormatクラスを構成します。
string folder1 = "file:///home/chrisgerken/blah/blah/folder1";
string folder2 = "file:///home/chrisgerken/blah/blah/folder2";
string folder3 = "file:///home/chrisgerken/blah/blah/folder3";
TextInputFormat.setInputPaths(job, new Path(folder1), new Path(folder2), new Path(folder3));
これにより、フォルダー1、2、および3内のすべてのファイルがマッパーによって処理されます。
もちろん、別の入力タイプを使用する必要がある場合は、そのタイプを適切に構成する必要があります。
于 2012-08-30T14:03:28.797 に答える
1
複数のファイルがある場合は、MultipleInputsを使用します
addInputPath() メソッドは、次の目的で使用できます。
- 複数のパスと 1 つの共通マッパー実装を追加する
- カスタム マッパーと入力形式の実装を使用して複数のパスを追加します。
単一のレデューサーを使用するには、各マップの出力キーを同じにします... 1 または「abc」とします。このようにして、フレームワークはレデューサーを 1 つだけ作成します。
于 2012-08-30T14:02:41.340 に答える