問題タブ [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 に答える
777 参照

hbase - GraphX - 30 億を超える頂点を保存および計算するための最良の方法

Spark と GraphX は初めてです。これまで、処理には Titan DB (HBase ストレージ) と Giraph を使用してきました。~30 億の頂点と ~50 億のエッジを持つグラフを作成する必要があります。グラフを保存する最良の方法は何ですか(頂点とエッジを追加してグラフを最初から作成します。また、グラフ作成のためにtitan APIから離れたいと思います)。これに関する直接のドキュメントを見つけることができません。コモディティ ハードウェアを使用して、GraphX を使用してグラフとプロセスを作成/保存するための最良の方法を教えてください。

ありがとう。

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

scala - HCatalog の頂点およびエッジ テーブルから GraphX で使用するための頂点およびエッジ RDD を作成する方法

Vertex_id タイプの Long、Vertex_name タイプの String、Vertex_Label タイプの String を含む、HCatalog に保存された vertex_table という名前のテーブルがあります。また、次のフィールドを含む edge_table という名前のテーブルを HCatalog に格納しました: ida タイプ Long、idb タイプ Long、および edge_label タイプ String。

Spark の scala REPL シェルから、hiveContext を使用してこれらのテーブルを正常にクエリできます。例えば:

これらの 2 つのテーブルから Apache Spark GraphX グラフを作成したいと考えています。

私は Spark、GraphX、scala の新人レベルです。したがって、Spark の hyveContext で使用できる HCatalog テーブルから頂点とエッジの RDD を作成する scala スクリプトが役立ちます。HCatalog vertex_table から頂点 RDD を作成する例で十分です。

私自身の実験では、次のエラーが発生します。

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

scala - Spark GraphX グラフの設定時に NoSuchMethodError を取得する

ここで発生したものと同様のエラーが発生しています。spark シェルを使用して GraphX を実行できますが、jar ファイルで spark-submit を使用しようとすると NoSuchMethodError が発生します。これは、それが不平を言う行です:

次のエラーが表示されます。

コードは sbt アセンブリを使用してビルドされるため、何が問題なのかわかりません。

編集: 新しい scala プロジェクトを作成して、ここからコードを取得し、それを jar ファイルに組み込みました。これはスカラ ファイルです。

ビルド設定は次のとおりです。

コードで sbt アセンブリを実行できますが、実行すると

NoSuchMethodError が発生します。

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

neo4j - Neo4j または GraphX / Giraph のどちらを選択しますか?

グラフ処理の方法とツールへの遠足を始めたところです。私たちが基本的に行っていること - ページランク、クラスタリング係数、トライアングル数、直径、接続性などのいくつかの標準メトリックをカウントします。以前は Octave に満足していましたが、10^9 ノード/エッジとしましょう。 .

したがって、可能なソリューションは、Hadoop/Giraph、Spark/GraphX、それらの上に Neo4j などで作成された分散クラウドです。

しかし、私は初心者なので、実際に何を選ぶべきか誰かアドバイスできますか? Spark/GraphX を使用する場合と Neo4j を使用する場合の違いがわかりませんでした。今のところ、Spark/GraphX を検討しています。Python に似た構文が多く、neo4j には独自の Cypher があるためです。neo4j でのビジュアライゼーションはクールですが、このような大規模では役に立ちません。追加レベルのソフトウェア (neo4j) を使用する理由があるのか​​ 、それとも単に Spark/GraphX を使用するのかわかりません。純粋な Hadoop と Giraph、GraphX、または Hive を使用した場合のように、neo4j はそれほど時間を節約できないことを理解していたので。

ありがとうございました。

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

scala - ノンリニア DAG を使用したキャッシュされていないファイル ソースに関して、Apache Spark キャッシングはどのように機能しますか?

次の例を考えてみましょう

私の質問は

rdd1 と rdd2 をキャッシュしない場合、「最初の実体化」中にそれぞれ 2 回リロードされますか?

それらをキャッシュすると、データが複製されませんか? データを一時的にキャッシュする方法はありますか? たとえば、グラフがキャッシュされるまでパーティションをキャッシュし、グラフが完全にキャッシュされたら、それを作成したRDDを永続化解除します。それは可能ですか?

編集:肥大化した冗長性を削除し、質問を単一のトピックに集中させました。

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

apache-spark - GraphX は比較的大きなグラフでは機能しません

230M エッジのグラフを処理できません。apache.spark のクローンを作成してビルドし、クラスターで試しました。

Spark スタンドアロン クラスターを使用します。

グラフには 231359027 個のエッジがあります。そして、そのファイルの重量は 4,524,716,369 バイトです。グラフはテキスト形式で表されます。

私のコード:

実行した後、多くのjava.lang.OutOfMemoryError: Java heap spaceエラーが発生しましたが、もちろん結果は得られませんでした。コードに問題がありますか? またはクラスター構成で?比較的小さなグラフでは問題なく機能するためです。しかし、このグラフではうまくいきませんでした。(そして、230M エッジが大きすぎるデータだとは思いません)

アドバイスありがとうございます!


解決済み

ドライバープログラム用のメモリが足りませんでした。クラスター構成を次のように変更しました。

また、すべての頂点とエッジを収集してカウントすることもお勧めできません。これを行うのは簡単です:graph.vertices.countそしてgraph.edges.count

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

titan - グレムリン - ギラフ - GraphX ? TitanDb で

私の選択を確認するための助けが必要です...そして、情報を提供できるかどうかを知るために。私のストレージ データベースは、Cassandra を使用した TitanDb です。非常に大きなグラフがあります。私の目標は、後者のグラフで Mllib を使用することです。

私の最初のアイデア: GraphX で Titan を使用しますが、何も見つかりませんでした。開発中のものも見つかりませんでした... TinkerPop はまだ準備ができていません。というわけでジラフに一目ぼれ。TinkerPop、Titan は TinkerPop の Rexster と通信できます。

私の質問は: Giraph を使用する利点は何ですか? Gremlin も同様の考えで配布されているようです。

説明していただきありがとうございます。Gremlin と Giraph (または GraphX) の違いがよくわからないと思います。

良い1日を。

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

amazon-web-services - EMR で実行する正しく動作する GraphX Spark アプリケーションを構築するにはどうすればよいですか?

Wikipedia ダンプの PageRank スコアを処理し、上位の結果を取得するために、Spark GraphX (Scala 2.10) およびその他の Spark ライブラリで記述されたスクリプトがあります。スクリプトをサンプル フォルダーに配置し、必要な依存関係をシューホーニングすることで、スクリプトをローカルで実行することができます。しかし、Amazon EC2 で実行できるように、これをアプリケーションとしてコンパイルする方法が見つかりません。

私が試してみました:

  • スクリプトを新しいクラスとして使用して、Spark プロジェクト全体のファット jar をコンパイルし、例からクラスを実行します: org.apache.spark.examples.graphx.PageRankGraphX (コンパイルが成功し、 cluster - SparkException: アプリケーションが失敗ステータスで終了しました)。これは、私がローカル セットアップで最も成功したアプローチですが、私の方法は標準的ではなかったと思います。
  • ソースコード内の別のライブラリにスクリプトを追加します。たとえば、GraphX (これによりコンパイルが不可能になります。次のような多くのライブラリ項目が見つかりません: java.lang.NoClassDefFoundError: com/google/common/util/concurrent/ThreadFactoryBuilder)
  • Sparkソースなしで完全に新しいプロジェクトを構築し、sbtファイルにSpark依存関係(Sparkコア、Sparkストリーミング、Spark GraphXなど)とともにソースコードとしてスクリプトのみを追加します-これはコンパイルされますが、実行しようとするとほとんどすべての依存関係のコードが欠落しているため、実行時にアプリケーションが失敗します (例: ClassDefNotFoundException: Scala/Serializer)。

私が望んでいるのは、Amazon EMR で処理される、GraphX で書かれたスタンドアロンの jar を実行する方法について、誰かが簡単に実行できる指示を持っていることです。私のスクリプト全体を以下に掲載します。これがあなたのものである場合、AWS で実行して出力ファイルを生成するにはどうしますか? ここでは、詳細が基本的すぎるとは思いません。

  • これを行うための正しい方法は、ダウンロードされたSparkプロジェクト全体を構築して、私のスクリプトを新しいクラスとして構築していますか?もしそうなら、Sparkソースコード内で、スクリプトはどのフォルダーに属しますか?
  • または、新しいプロジェクトでそれを構築する正しい方法はありますか? もしそうなら、アプリケーションが正しく動作するように、sbt が実行時に必要になる可能性のあるすべての依存関係を確実に含めるにはどうすればよいでしょうか?
  • そうではなく、どちらも正しくない場合、スクリプトを Amazon WS EMR で正常に実行するにはどうすればよいですか? 以前、この種の問題なしに MR でクラスター化されたプロジェクトを実行しました。

私が実行しようとしているスクリプトは以下のとおりです。すべての依存関係が適切にコンパイルされている場合、これが正常に機能することを確認できますが、コンパイルされたバージョンは EMR の実際のジョブで失敗しました。

Anyone light you can shed on this will be very helpful. And like I said, I've found the level of detail lacking in almost every tutorial and guide I've read about this, so the more you can afford the better (PS I have tried all the above on a Windows machine).