7

現在、Disco に PageRank を実装しています。反復アルゴリズムとして、1 つの反復の結果が次の反復への入力として使用されます。

すべてのリンクを表す大きなファイルがあり、各行はページを表し、行の値はリンク先のページを表します。

Disco の場合、このファイルを N 個のチャンクに分割し、MapReduce を 1 ラウンド実行します。その結果、(ページ、ランク) タプルのセットを取得します。

このランクを次の反復にフィードしたいと思います。ただし、現在、私のマッパーは、グラフ ファイルとページランクの 2 つの入力を必要としています。

  1. 各行がページを表し、ランクであり、リンクを表すように、グラフ ファイルとページ ランクをまとめて "zip" したいと思います。
  2. このグラフ ファイルは N 個のチャンクに分割されているため、ページランク ベクトルを N 個の並列チャンクに分割し、ページランク ベクトルの領域をグラフ チャンクに圧縮する必要があります。

これはすべて必要以上に複雑に思えます。(典型的な mapreduce アルゴリズムを使用した) 非常に単純な操作として、アプローチを本当に単純化できる Disco に関する何かが欠けているようです。

何かご意見は?

4

1 に答える 1

1

最初のパスに init_map を使用し、その後の反復ごとに iter_map を使用する必要があるようです。

参照: http://discoproject.org/doc/faq.html#id7

(ページ、ランク) タプルだけでなく、アウトリンクを含む Python オブジェクトを出力できますか?

別のオプションは、どこかのページ (dict、memcache、kyotocabinet など) によってキー付けされたアウトリンクを作成し、マッピング関数からそれらを検索することです。Disco でチェーン化する場合、ワークフローの途中で圧縮する必要はないと思います。

于 2010-09-13T14:15:10.910 に答える