9

apache spark を使用して、大量のデータでばらばらなセット (接続されたコンポーネント/ユニオン検索) を検索するアルゴリズムを見つけようとしています。問題はデータ量です。グラフ頂点の Raw 表現でさえ、単一のマシンの RAM には収まりません。エッジもラムに収まりません。

ソース データは、hdfs 上のグラフ エッジのテキスト ファイル: "id1 \t id2" です。

int ではなく文字列値として存在する id。

私が見つけた単純な解決策は次のとおりです。

  1. エッジの rdd を取る ->[id1:id2] [id3:id4] [id1:id3]
  2. エッジをキーでグループ化します。->[id1:[id2;id3]][id3:[id4]]
  3. 各レコードに対して、各グループに最小 ID を設定 ->(flatMap) [id1:id1][id2:id1][id3:id1][id3:id3][id4:id3]
  4. ステージ3から逆rdd[id2:id1] -> [id1:id2]
  5. leftOuterJoinステージ 3 および 4 の rdds の
  6. ステップ3のrddのサイズが変わらない間、ステージ2から繰り返します

ただし、これにより、ノード間で大量のデータが転送されます (シャッフル)。

何かアドバイスはありますか?

4

1 に答える 1