2011-02-09 7 views
0

私は、おおよそ次の処理を行い、並列アルゴリズム、に取り組んでいます: Hadoop/MapReduceの入力としてのメモリからのオブジェクト?

  1. は10Kの単語の合計で数テキスト文書をお読みください。
  2. テキストコーパスのすべての単語のオブジェクトを作成します。
  3. すべての単語オブジェクト間にペアを作成します(yes、O(n))。最も頻繁なペアを返します。
  4. Iは最初の1000拳マシン上残りのワードは、オブジェクト間の次のマシン上に、第二千ワードオブジェクトのペアを作成することによって、3ステップを並列化したい

など

私の質問は、2.ステップで作成されたオブジェクトをMapperに渡す方法です。私が知っている限り、私はこれのために入力ファイルが必要なので、オブジェクトをシリアライズする必要があります(これまではこれで動作しませんでした)。マッパーにオブジェクトを渡す直接の方法はありますか?助けを事前に

おかげ

エフゲニー

UPDATE は前に私の質問を読んでいただきありがとうございます。直列化はこれを解決する最善の方法のようです(java.io.Serializableを参照)。さらに、このチュートリアルでは、シリアル化されたオブジェクトのデータをhadoop:http://www.cs.brown.edu/~pavlo/hadoop/に読み込むのに役立つことが分かりました。

+0

この分野の専門家ではありませんが、私はそこにいるとは思いません。オブジェクトをシリアライズすることはあまり難しくありません。 – Nick

答えて

0

すべての手順を並列化するのはどうですか?あなたの#1テキスト文書をマッパーの入力として使用します。マッパーのすべての単語のオブジェクトを作成します。マッパーでは、あなたのキーと値のペアは、単語とオブジェクトのペア(またはあなたがやっていることに応じてオブジェクトワード)になります。 Reducerは、一意のペアを数えます。

Hadoopは、同じキーをすべて同じReducerにまとめて処理します。

+0

提案に感謝します。アルゴリズムは非常に大規模で、私はパフォーマンスを向上させることができるかどうかを確認するために、まずリソースを消費する部分から始めようと考えました。 – evgeni

関連する問題