SlideShare a Scribd company logo
Spark GraphX
で始めるグラフ解析
市ヶ谷Geek★Night#11 Lightning Talk
2016-12-21 @mogproject
About me
http://mogproject.com
Spark GraphX
Apache Spark GraphX とは
▸Spark に標準で組み込まれているグラフ処理 API
▸Spark クラスタ = データストア / 計算資源
▸大規模グラフを扱いやすい
Spark GraphX
今回お話しする「グラフ」は・・・
Why GraphX?
実用例
▸大規模グラフの分析プロジェクト (論文の共著者関係分析)
▸ノード数: 500万〜 エッジ数: 9000万〜
▸最初は Python製 の NetworkX を使っていた
▸グラフが大きくなるにつれ、メモリ不足が発生
▸Scala / Spark に慣れているなら手軽に利用可能
Why GraphX?
実用例: (無向)グラフの中心性計算
▸次数中心性
▸次数 = 各ノードに接続しているエッジの数
▸直接的なつながりの多いノードを発見できる
▸媒介中心性
▸全てのノードの組に対して最短経路を求める
▸より多くの組の最短経路上に位置するノードを計算
コード例
build.sbt
▸"spark-graphx" への依存を追加
▸Scala 2.12 には未対応
scalaVersion := "2.11.8"
libraryDependencies ++= Seq(
"org.apache.spark" %% "spark-core" % "2.0.2",
"org.apache.spark" %% "spark-graphx" % "2.0.2"
)
build.sbt
コード例
グラフデータの読み込み
▸エッジリストからグラフを生成する例
0 1
0 2
1 2
1 3
3 4
4 5
4 6
5 6
edge_list_1.txt
コード例
グラフデータの読み込み
▸GraphLoader のメソッドを利用する
import org.apache.spark._
import org.apache.spark.graphx._
val conf = new SparkConf().setMaster(s"local[2]")
val sc = new SparkContext(conf)
val g: Graph[Int, Int] =
GraphLoader.edgeListFile(sc, "path/to/edge_list.txt")
Main.scala
コード例
次数中心性の計算
▸Graph#degrees を呼び出すだけ
g.degrees.sortByKey().collect().foreach { case (n, v) =>
println(s"Node: ${n} -> Degree: ${v}")
}
Node: 0 -> Degree: 2
Node: 1 -> Degree: 3
Node: 2 -> Degree: 2
Node: 3 -> Degree: 2
Node: 4 -> Degree: 3
Node: 5 -> Degree: 2
Node: 6 -> Degree: 2
Main.scala
出力例
コード例
次数中心性の計算
3
2
3
2
2
2
2
コード例
媒介中心性の計算
▸なかなか大変 (説明省略)
コード例
媒介中心性の計算
▸実行結果
Node: 0 -> Betweenness: 0.0
Node: 1 -> Betweenness: 8.0
Node: 2 -> Betweenness: 0.0
Node: 3 -> Betweenness: 9.0
Node: 4 -> Betweenness: 8.0
Node: 5 -> Betweenness: 0.0
Node: 6 -> Betweenness: 0.0
出力例
コード例
媒介中心性の計算
8
0
8
0
9
0
0
後日談
性能面の課題
▸グラフ操作の種類 (アルゴリズム) によって得手不得手があ
る
▸Spark ノード間の通信コスト
▸Spark の UI でモニタリングしつつチューニングを繰り返す
後日談
C++ で実装し直した
▸とある処理の所要時間: 854日 (GraphX) -> 15日 (C++)
60 倍 高速化!
Thanks!
ご清聴ありがとうございました
▸コード例はこちら
▸https://github.com/mogproject/example-graphx
クリスマスに働く人のイラスト ©︎いらすとや

More Related Content

PPTX
初めてのSpark streaming 〜kafka+sparkstreamingの紹介〜
PDF
Sparkを用いたビッグデータ解析 〜 前編 〜
PDF
Spark Streaming と Spark GraphX を使用したTwitter解析による レコメンドサービス例
PPTX
Spark Streamingを使ってみた ~Twitterリアルタイムトレンドランキング~
PDF
QConTokyo2015「Sparkを用いたビッグデータ解析 〜後編〜」
PDF
Spark Streamingで作る、つぶやきビッグデータのクローン(Hadoop Spark Conference Japan 2016版)
PPTX
Bluemixを使ったTwitter分析
PPTX
Big datauniversity
初めてのSpark streaming 〜kafka+sparkstreamingの紹介〜
Sparkを用いたビッグデータ解析 〜 前編 〜
Spark Streaming と Spark GraphX を使用したTwitter解析による レコメンドサービス例
Spark Streamingを使ってみた ~Twitterリアルタイムトレンドランキング~
QConTokyo2015「Sparkを用いたビッグデータ解析 〜後編〜」
Spark Streamingで作る、つぶやきビッグデータのクローン(Hadoop Spark Conference Japan 2016版)
Bluemixを使ったTwitter分析
Big datauniversity

What's hot (20)

PDF
20160127三木会 RDB経験者のためのspark
PPTX
PythonでDeepLearningを始めるよ
PPTX
Apache Sparkを使った感情極性分析
PPSX
HBaseとSparkでセンサーデータを有効活用 #hbasejp
PPTX
Watson summit 2016_j2_5
PDF
本当にあったApache Spark障害の話
PPTX
SparkとJupyterNotebookを使った分析処理 [Html5 conference]
PDF
20151205 Japan.R SparkRとParquet
PPTX
Pythonで入門するApache Spark at PyCon2016
PPTX
BigDataUnivercity 2017年改めてApache Sparkとデータサイエンスの関係についてのまとめ
PDF
Apache Sparkの紹介
PDF
Spark Summit 2015 参加報告
PPTX
Devsumi 2016 b_4 KafkaとSparkを組み合わせたリアルタイム分析基盤の構築
PDF
データ分析に必要なスキルをつけるためのツール~Jupyter notebook、r連携、機械学習からsparkまで~
PDF
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
PDF
15.05.21_ビッグデータ分析基盤Sparkの最新動向とその活用-Spark SUMMIT EAST 2015-
PDF
Spark Streamingを活用したシステムの検証結果と設計時のノウハウ
PDF
16.02.08_Hadoop Conferece Japan 2016_データサイエンスにおける一次可視化からのSpark on Elasticsear...
PPTX
ApacheSparkを中心としたOSSビッグデータ活用と導入時の検討ポイント
PDF
Sparkによる GISデータを題材とした時系列データ処理 (Hadoop / Spark Conference Japan 2016 講演資料)
20160127三木会 RDB経験者のためのspark
PythonでDeepLearningを始めるよ
Apache Sparkを使った感情極性分析
HBaseとSparkでセンサーデータを有効活用 #hbasejp
Watson summit 2016_j2_5
本当にあったApache Spark障害の話
SparkとJupyterNotebookを使った分析処理 [Html5 conference]
20151205 Japan.R SparkRとParquet
Pythonで入門するApache Spark at PyCon2016
BigDataUnivercity 2017年改めてApache Sparkとデータサイエンスの関係についてのまとめ
Apache Sparkの紹介
Spark Summit 2015 参加報告
Devsumi 2016 b_4 KafkaとSparkを組み合わせたリアルタイム分析基盤の構築
データ分析に必要なスキルをつけるためのツール~Jupyter notebook、r連携、機械学習からsparkまで~
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
15.05.21_ビッグデータ分析基盤Sparkの最新動向とその活用-Spark SUMMIT EAST 2015-
Spark Streamingを活用したシステムの検証結果と設計時のノウハウ
16.02.08_Hadoop Conferece Japan 2016_データサイエンスにおける一次可視化からのSpark on Elasticsear...
ApacheSparkを中心としたOSSビッグデータ活用と導入時の検討ポイント
Sparkによる GISデータを題材とした時系列データ処理 (Hadoop / Spark Conference Japan 2016 講演資料)
Ad

Similar to Spark GraphX で始めるグラフ解析 (12)

PDF
Spark GraphXについて @Spark Meetup 2014/9/8
PDF
GraphXはScalaエンジニアにとってのブルーオーシャン @ Scala Matsuri 2014
PDF
NetworkXによる語彙ネットワークの可視化
PDF
Sparkで始めるお手軽グラフデータ分析
PDF
GraphX によるグラフ分析処理の実例と入門
PDF
Pythonで簡単ネットワーク分析
PPTX
フレームワークを求めるな。ECMAScriptを使へ。
PPTX
グラフデータからの分析アプローチ
PDF
Spark GraphFrames のススメ
PDF
グラフデータ分析 入門編
PPTX
Introduction of network analysis with Google Colaboratory -- Example of Netwo...
PPTX
Network analysis and visualization by Google Colaboratory
Spark GraphXについて @Spark Meetup 2014/9/8
GraphXはScalaエンジニアにとってのブルーオーシャン @ Scala Matsuri 2014
NetworkXによる語彙ネットワークの可視化
Sparkで始めるお手軽グラフデータ分析
GraphX によるグラフ分析処理の実例と入門
Pythonで簡単ネットワーク分析
フレームワークを求めるな。ECMAScriptを使へ。
グラフデータからの分析アプローチ
Spark GraphFrames のススメ
グラフデータ分析 入門編
Introduction of network analysis with Google Colaboratory -- Example of Netwo...
Network analysis and visualization by Google Colaboratory
Ad

More from Yosuke Mizutani (6)

PDF
Introduction to Graph Theory
PDF
フロントエンド初心者の大学生が Scala.js で Web アプリを作ってみた話
PDF
はじめての CircleCI
PDF
Adtech x Scala x Performance tuning
PDF
ScalaにまつわるNewsな話
PDF
アドテク×Scala×パフォーマンスチューニング
Introduction to Graph Theory
フロントエンド初心者の大学生が Scala.js で Web アプリを作ってみた話
はじめての CircleCI
Adtech x Scala x Performance tuning
ScalaにまつわるNewsな話
アドテク×Scala×パフォーマンスチューニング

Spark GraphX で始めるグラフ解析

Editor's Notes

  • #3: 昨年まで市ヶ谷で Scala エンジニア 今年からアメリカに留学、人生ニューゲーム、スーパーマリオラン
  • #5: 点と線で表現されるデータ構造 関係性の分析に適している 点をノード、線をエッジと呼ぶ
  • #9: ダンベル型のグラフ
  • #15: 3番のノードは、次数は低いのものの、媒介中心性が高い