Hadoop MapReduceに複数の異なるマッパーを複数入力することは可能ですか?各マッパークラスは異なる入力セットで動作しますが、それらはすべて同じレデューサーによって消費されるキーと値のペアを放出します。ここでは、マッパーを連鎖させることについては言及していませんが、私は、異なるマッパーを並行して実行しています。Hadoop MapReduceに複数の異なるマッパーを持つ複数の入力を持つことは可能ですか?
答えて
これは結合と呼ばれます。
mapred。*パッケージ(以前はサポートされていましたが、まだサポートされています)にマッパーとレデューサーを使いたいとします。新しいパッケージ(mapreduce。*)では、1つのマッパー入力のみが可能です。 mapredパッケージを使用すると、結合を定義するためにMultipleInputsクラスを使用します。
MultipleInputs.addInputPath(jobConf,
new Path(countsSource),
SequenceFileInputFormat.class,
CountMapper.class);
MultipleInputs.addInputPath(jobConf,
new Path(dictionarySource),
SomeOtherInputFormat.class,
TranslateMapper.class);
jobConf.setJarByClass(ReportJob.class);
jobConf.setReducerClass(WriteTextReducer.class);
jobConf.setMapOutputKeyClass(Text.class);
jobConf.setMapOutputValueClass(WordInfo.class);
jobConf.setOutputKeyClass(Text.class);
jobConf.setOutputValueClass(Text.class);
は、私は質問、2件の回答、及び抗勧告であなたの質問にお答えします。
異種マッピングジョブを並行して実行するときに、どのような利点がありますか?正しくシャッフルできる均質な結果が出力されますか?アイデンティティマップを使用して同じレコードを2回渡すことを避けるというアイデアですか?
最初の答えは、艦隊の半分(または入力データサイズに最も適した比率)のマッパー専用ジョブを同時にスケジュールし、均質な結果を出力し、続いて結合を実行する減速専用ジョブを実行することです。
2番目の答えは、異種入力の両方のフレーバーを認識して変換できるカスタムのInputFormatを作成することです。これは非常に醜いですが、最初の提案の不要なアイデンティティマップを避けることができます。
反推奨はではありません。では、Chrisの回答から廃止予定のHadoop APIを使用しています。 Hadoopは非常に若いですが、APIは「新しい」フレーバーの周りで安定しています。あなたは最終的にバージョンロックインに到着するでしょう。
いくつかのマッパーを実行する理由は、 FlumeJavaの論文に示されているようにフラット化された操作を実装します。異なるマッパーからの出力は、同じシャッフル操作に参加することができます。 – tibbe
- 1. 複数のキータイプを持つMapReduceマッパーとレデューサー
- 2. 複数のランチャーアクティビティを持つことは可能ですか?
- 3. 複数のJOptionPaneダイアログを持つことは可能ですか?
- 4. HadoopのMapReduceの複数の入力ファイル
- 5. 複数のモデルを持つThreeT20TTableViewController?これは可能ですか?
- 6. HTML5キャッシュ - 1つのURLに複数の異なるキャッシュを持つことは可能ですか?
- 7. 複数の入力と複数のフィールドを持つLINQ
- 8. webpack:複数のファイルタイプ出力を持つ複数の入力
- 9. 複数の異なる出力を持つ1つのドロップダウンメニュー
- 10. 複数のフィールドを持つsimple_form入力
- 11. 複数のデータ入力を持つクラス
- 12. 複数のパイプ入力を持つNSTask
- 13. 複数の入力を持つSSISスクリプトコンポーネント
- 14. 複数の入力を持つJavaスイッチケース
- 15. 異なるIDを持つ複数のスレッドがクリティカルセクションに入ることを可能にするマルチスレッド
- 16. Spring:autowiring中に異なる修飾子を持つ重複したコンストラクタを持つことは可能ですか?
- 17. Azure Service Fabric - 1つのパブリックIPアドレスを持つ複数のノードタイプを持つことは可能ですか?
- 18. 複数の入力と出力を持つfplot関数
- 19. Python.scipy:Curve_fit複数の入力と出力を持つ関数
- 20. 1つの選択可能な値を持つ複数のラジオボタン
- 21. BeanがSpringで複数の親を持つことは可能ですか?
- 22. アンドロイドマニフェストホスト宣言で複数のトップレベルドメインを持つことは可能ですか?
- 23. MSTestで複数の 'TestClass'を持つことは可能ですか?
- 24. Hadoop Dfsとmapreduceの入力として複数のファイル
- 25. ActiveMQに同じclientIdを持つ複数のサービスインスタンスを持つことは可能でしょうか?
- 26. Javascript/Node.JS - 複数の定義を持つvarを持つことは可能ですか?
- 27. iOSアプリケーションが複数のウィンドウを持つことは可能でしょうか?
- 28. WPF:異なるItemsSourcesを持つ複数のItemsControlを持つことはできますか?
- 29. 異なる数のセルを持つviewControllerでの複数のコレクションビュー
- 30. pythonの入力fuctionで複数の引数を持つ方法
新しいapis( 'mapreduce'は' mapred'ではありません)には 'MultipleInputs'があります:http://hadoop.apache.org/common/docs/r1.0.3/api/org/apache/hadoop/mapreduce/lib /input/MultipleInputs.html –
@Donald Miner:もちろんそうです。 –
@DonaldMinerいくつかのバージョンはありますが、少なくとも0.20.xはそうではないようです。ここでMultipleInputsの欠如に注意してください:http://hadoop.apache.org/docs/r0.20.205.0/api/org/apache/hadoop/mapreduce/lib/input/ – kabuko