問題タブ [spark-graphx]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
228 参照

spark-graphx - Join 演算子の一致とは正確には何を意味するのか

よくわかりません。かなり単純な結合操作のように見えることを実行しようとしていますが、期待どおりに機能していません。pGraphcGraphの 2 つのグラフがあります。それぞれが CSV ファイルからエントリを読み取ることによって構築され、使用されるid値は属性の 1 つから生成されます。pGraphには、属性で完全に具体化されたp個の頂点が含まれ、 cGraphには、同様に定義されたc個の頂点が含まれます。pGraphでは、一貫したID値を使用して、 p個の頂点とc個の頂点の間に定義されたエッジがあります。ただし、cの属性は頂点はcGraphでのみ使用できます。c頂点の属性 ( cGraphから) とp頂点の属性 ( pGraph から) が結合の結果 ( xGraph )で定義されるように、2 つのグラフを結合したいと考えています。

これを達成すると私が考えたコードは次のとおりです。

最終的に、デバッグによって、map 関数がまったく呼び出されていないことがわかりました。つまり、明らかにpGraphcGraphに一致する頂点がありませんでした。id値が同じであれば一致するだろうと想定していました。しかし、それは正しくないようです。一致が Vertex の両方のコンポーネント (id と属性) に基づいている場合、もちろん一致はありません。これは、一方の場合は属性が null であり、他方の場合は適切な値であるためです。

私が見つけた結合操作の例は、this入力頂点が異なるグラフからのものではなく、同じであるという意味ですべて自明です。

助言がありますか?

0 投票する
1 に答える
705 参照

java - Apache Spark GraphX java.lang.ArrayIndexOutOfBoundsException

Spark-GraphX の操作方法を理解しようとしていますが、常に問題が発生するため、誰かが何を読むべきかなどをアドバイスしてくれるかもしれません。さまざまなサイズのネットワークなどを処理するために必要なメモリ量の説明.

私のテストでは、いくつかのサンプル データセットを使用します。Spark シェルから 1 つのマスター ノード (~16Gb RAM) で実行します。

3 ~ 5 人のワーカー (4Gb RAM を搭載した 1 台のマシンごとに 1 人のワーカー):

次に、Spark Shell から scala スクリプトを実行します (コンパイルされていません)。

私はまだ HDFS を使用していません。データセット ファイルを各マシンにコピーしただけです (もちろんパス名は同じです)。zachary club のような小さなネットワークや、さらに大きな 256 Mb までのネットワーク (ドライバー メモリパラメーターを増やした後) では、三角形やウェッジなどを数えることができます。

ここで、750 Mb 以上のネットワークを処理しようとすると、エラーが発生します。たとえば、2 列 (link_from link_to)、750Mb の形式のウィキペディア リンク データセットがあります。それをロードしてみてください:

エラーが発生します:

実際には、>>1Tb のサイズのデータ​​セットで作業する必要がありますが、小さいデータセットでもエラーが発生します。私は何を間違っていますか?メモリの制限は?>>1Tb ファイルに対してどのような戦略を提案できますか?それらをより適切に保存するにはどうすればよいですか? ありがとう。

0 投票する
1 に答える
1065 参照

scala - Spark GraphX: ノードだけをグラフに挿入する方法

たとえば、GraphX では、既存のネットワークを更新するために 2 つのグラフをマージできることを知っています。GraphX でこのような更新操作を行うにはどうすればよいでしょうか?! ありがとう !

0 投票する
1 に答える
268 参照

apache-spark - 頂点を結合するとき、MEMORY_ONLY キャッシュを使用する必要がありますか?

のソースを見るとouterJoinVertices

これはバグなのか仕様なのか気になる

質問

  1. グラフ/結合された頂点が既に別のものを介してキャッシュされている場合StorageLevel(例: MEMORY_ONLY_SER) - これが原因org.apache.spark.graphx.impl.ShippableVertexPartitionOps ... WARN ShippableVertexPartitionOps: Joining two VertexPartitions with different indexes is slow.ですか?

  2. この場合、これは Spark のバグですか (これは 1.3.1 からのものです)? もしそうなら、これに関するJIRAの問題を見つけることができませんでした(しかし、私はあまりよく見ていませんでした...)

  3. このメソッドに新しい StorageLevel を提供するほど簡単に修正できないのはなぜですか?

  4. この問題の回避策は何ですか? (私が考えることができるのは、vertices.join(otherVertices)とoriginalGraph.edgesなどで新しいグラフを作成することです...しかし、それは間違っていると感じています...

0 投票する
3 に答える
1523 参照

scala - 隣接頂点タイプで混合ノード グラフをフィルタリングする方法

この質問は、Spark GraphX に関するものです。特定の他のノードの隣接ノードを削除して、サブグラフを計算したいと考えています。

[タスク] C2 ノードの隣接ノードではない A ノードと B ノードを保持します。

入力グラフ:

出力グラフ:

出力グラフを返すGraphXクエリをエレガントに書く方法は?

0 投票する
1 に答える
719 参照

scala - 同じノード x が指すノード v、w 間のエッジを計算する方法

この質問は、Spark GraphX に関するものです。任意のグラフが与えられた場合、いずれかのノード x が指す任意の 2 つのノード v、w の間にエッジを追加する新しいグラフを計算したいと考えています。新しいエッジには、ポインティング ノードが属性として含まれている必要があります。

つまり、与えられた辺 (x, v, nil) と (x, w, nil) から、辺 (v, w, x) と (w, v, x) を計算します。

これはどのグラフでも機能するはずであり、頂点 ID など、事前にグラフについて何も知る必要はありません。

[タスク] 同じノード (例: B) によってポイントされたときに、ノード (例: A、C) 間に 2 つの有向エッジを追加します。

入力グラフ:

出力グラフ (双方向エッジ = 2 つの有向エッジ):

出力グラフを返すGraphXクエリをエレガントに書く方法は?

0 投票する
0 に答える
243 参照

apache-spark - Spark GraphX サブグラフ メソッドは null を生成します。

subgraphグラフの頂点をフィルタリングするために使用します。ただし、頂点を収集すると、いくつかのnull値がそこにあります。

元のグラフの頂点にnull値が含まれていないことを保証できます。

0 投票する
2 に答える
5176 参照

apache-spark - Apache Spark GraphX 接続コンポーネント

サブグラフ関数を使用して、特定の接続コンポーネントから頂点とエッジのみを含むグラフを取得する方法は? 連結成分 ID を知っているとしましょう。最終的な目標は、連結成分に基づいて新しいグラフを作成することです。元のグラフの頂点属性を保持したいと思います。