Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
NK
Uploaded by
Nagato Kasaki
4,768 views
Sparkで始めるお手軽グラフデータ分析
『詳解 Apache Spark』出版記念イベント LT資料 http://connpass.com/event/30375/
Technology
◦
Read more
3
Save
Share
Embed
Embed presentation
Download
Downloaded 41 times
1
/ 33
2
/ 33
3
/ 33
4
/ 33
5
/ 33
6
/ 33
7
/ 33
8
/ 33
9
/ 33
10
/ 33
11
/ 33
12
/ 33
13
/ 33
14
/ 33
15
/ 33
16
/ 33
17
/ 33
18
/ 33
19
/ 33
20
/ 33
21
/ 33
22
/ 33
23
/ 33
24
/ 33
25
/ 33
26
/ 33
27
/ 33
28
/ 33
29
/ 33
30
/ 33
31
/ 33
32
/ 33
33
/ 33
More Related Content
PDF
Spark graph framesとopencypherによる分散グラフ処理の最新動向
by
Nagato Kasaki
PPTX
2014 11-20 Machine Learning with Apache Spark 勉強会資料
by
Recruit Technologies
PDF
Oracle Cloud Developers Meetup@東京
by
tuchimur
PDF
Spark GraphFrames のススメ
by
Nagato Kasaki
PDF
GMO プライベート DMP で ビッグデータ解析をするために アプリクラウドで Apache Spark の検証をしてみた
by
Tetsuo Yamabe
PPT
Blueprintsについて
by
Tetsuro Nagae
PPTX
2015 03-12 道玄坂LT祭り第2回 Spark DataFrame Introduction
by
Yu Ishikawa
PDF
広告配信現場で使うSpark機械学習
by
x1 ichi
Spark graph framesとopencypherによる分散グラフ処理の最新動向
by
Nagato Kasaki
2014 11-20 Machine Learning with Apache Spark 勉強会資料
by
Recruit Technologies
Oracle Cloud Developers Meetup@東京
by
tuchimur
Spark GraphFrames のススメ
by
Nagato Kasaki
GMO プライベート DMP で ビッグデータ解析をするために アプリクラウドで Apache Spark の検証をしてみた
by
Tetsuo Yamabe
Blueprintsについて
by
Tetsuro Nagae
2015 03-12 道玄坂LT祭り第2回 Spark DataFrame Introduction
by
Yu Ishikawa
広告配信現場で使うSpark機械学習
by
x1 ichi
What's hot
PDF
KMLとR言語
by
文彦 牧山
PDF
なぜリアクティブは重要か #ScalaMatsuri
by
Yuta Okamoto
PDF
Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility o...
by
MapR Technologies Japan
PDF
20191211_Apache_Arrow_Meetup_Tokyo
by
Kohei KaiGai
PDF
20180109 titech lecture_ishizaki_public
by
Kazuaki Ishizaki
PDF
MapReduce入門
by
Satoshi Noto
PPTX
Parquetはカラムナなのか?
by
Yohei Azekatsu
PPTX
PySparkによるジョブを、より速く、よりスケーラブルに実行するための最善の方法 ※講演は翻訳資料にて行います。 - Getting the Best...
by
Holden Karau
PPTX
A Benchmark Test on Presto, Spark Sql and Hive on Tez
by
Gw Liu
PPTX
データサイエンティスト必見!M-1グランプリ
by
Satoshi Kitajima
PDF
Learning spaerk chapter03
by
Akimitsu Takagi
PPTX
R超入門機械学習をはじめよう
by
幹雄 小川
PDF
20160121 データサイエンティスト協会 木曜セミナー #5
by
Koichiro Sasaki
PDF
Inside of Asakusa DSL
by
Suguru ARAKAWA
PDF
2016-02-08 Spark MLlib Now and Beyond@Spark Conference Japan 2016
by
Yu Ishikawa
PDF
2015-11-17 きちんと知りたいApache Spark ~機械学習とさまざまな機能群
by
Yu Ishikawa
PDF
A Deeper Understanding of Spark Internals (Hadoop Conference Japan 2014)
by
Hadoop / Spark Conference Japan
PDF
20171212 titech lecture_ishizaki_public
by
Kazuaki Ishizaki
PDF
2019.03.19 Deep Dive into Spark SQL with Advanced Performance Tuning
by
Takuya UESHIN
PDF
20200424_Writable_Arrow_Fdw
by
Kohei KaiGai
KMLとR言語
by
文彦 牧山
なぜリアクティブは重要か #ScalaMatsuri
by
Yuta Okamoto
Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility o...
by
MapR Technologies Japan
20191211_Apache_Arrow_Meetup_Tokyo
by
Kohei KaiGai
20180109 titech lecture_ishizaki_public
by
Kazuaki Ishizaki
MapReduce入門
by
Satoshi Noto
Parquetはカラムナなのか?
by
Yohei Azekatsu
PySparkによるジョブを、より速く、よりスケーラブルに実行するための最善の方法 ※講演は翻訳資料にて行います。 - Getting the Best...
by
Holden Karau
A Benchmark Test on Presto, Spark Sql and Hive on Tez
by
Gw Liu
データサイエンティスト必見!M-1グランプリ
by
Satoshi Kitajima
Learning spaerk chapter03
by
Akimitsu Takagi
R超入門機械学習をはじめよう
by
幹雄 小川
20160121 データサイエンティスト協会 木曜セミナー #5
by
Koichiro Sasaki
Inside of Asakusa DSL
by
Suguru ARAKAWA
2016-02-08 Spark MLlib Now and Beyond@Spark Conference Japan 2016
by
Yu Ishikawa
2015-11-17 きちんと知りたいApache Spark ~機械学習とさまざまな機能群
by
Yu Ishikawa
A Deeper Understanding of Spark Internals (Hadoop Conference Japan 2014)
by
Hadoop / Spark Conference Japan
20171212 titech lecture_ishizaki_public
by
Kazuaki Ishizaki
2019.03.19 Deep Dive into Spark SQL with Advanced Performance Tuning
by
Takuya UESHIN
20200424_Writable_Arrow_Fdw
by
Kohei KaiGai
Similar to Sparkで始めるお手軽グラフデータ分析
PDF
大規模グラフアルゴリズムの最先端
by
Takuya Akiba
PPTX
分散グラフデータベース DataStax Enterprise Graph
by
Yuki Morishita
PDF
GraphX によるグラフ分析処理の実例と入門
by
鉄平 土佐
PPTX
DataStax Enterpriseによる大規模グラフ解析
by
Yuki Morishita
PPTX
Apache Sparkを使った感情極性分析
by
Tanaka Yuichi
PDF
グラフデータ分析 入門編
by
順也 山口
PDF
大規模ネットワーク分析 篠田
by
Kosuke Shinoda
PDF
大規模ネットワークの性質と先端グラフアルゴリズム
by
Takuya Akiba
PPTX
Pysparkで始めるデータ分析
by
Tanaka Yuichi
PDF
NIPS2013読み会: Scalable kernels for graphs with continuous attributes
by
Yasuo Tabei
PDF
GraphXはScalaエンジニアにとってのブルーオーシャン @ Scala Matsuri 2014
by
鉄平 土佐
PDF
DataStax EnterpriseでApache Tinkerpop入門
by
Yuki Morishita
PPTX
Spark GraphX で始めるグラフ解析
by
Yosuke Mizutani
PPTX
Bluemixを使ったTwitter分析
by
Tanaka Yuichi
PPTX
SparkとJupyterNotebookを使った分析処理 [Html5 conference]
by
Tanaka Yuichi
PDF
Spark GraphXについて @Spark Meetup 2014/9/8
by
鉄平 土佐
PDF
Scalaでプログラムを作りました
by
Tomoharu ASAMI
PDF
社会ネットワーク分析第7回
by
Satoru Mikami
PDF
Big Data University Tokyo Meetup #6 (mlwith_spark) 配布資料
by
Atsushi Tsuchiya
PDF
ネットワークマイニング(グラフ構造分析)
by
Katsuhiro Takata
大規模グラフアルゴリズムの最先端
by
Takuya Akiba
分散グラフデータベース DataStax Enterprise Graph
by
Yuki Morishita
GraphX によるグラフ分析処理の実例と入門
by
鉄平 土佐
DataStax Enterpriseによる大規模グラフ解析
by
Yuki Morishita
Apache Sparkを使った感情極性分析
by
Tanaka Yuichi
グラフデータ分析 入門編
by
順也 山口
大規模ネットワーク分析 篠田
by
Kosuke Shinoda
大規模ネットワークの性質と先端グラフアルゴリズム
by
Takuya Akiba
Pysparkで始めるデータ分析
by
Tanaka Yuichi
NIPS2013読み会: Scalable kernels for graphs with continuous attributes
by
Yasuo Tabei
GraphXはScalaエンジニアにとってのブルーオーシャン @ Scala Matsuri 2014
by
鉄平 土佐
DataStax EnterpriseでApache Tinkerpop入門
by
Yuki Morishita
Spark GraphX で始めるグラフ解析
by
Yosuke Mizutani
Bluemixを使ったTwitter分析
by
Tanaka Yuichi
SparkとJupyterNotebookを使った分析処理 [Html5 conference]
by
Tanaka Yuichi
Spark GraphXについて @Spark Meetup 2014/9/8
by
鉄平 土佐
Scalaでプログラムを作りました
by
Tomoharu ASAMI
社会ネットワーク分析第7回
by
Satoru Mikami
Big Data University Tokyo Meetup #6 (mlwith_spark) 配布資料
by
Atsushi Tsuchiya
ネットワークマイニング(グラフ構造分析)
by
Katsuhiro Takata
More from Nagato Kasaki
PDF
ゼロから始めるSparkSQL徹底活用!
by
Nagato Kasaki
PDF
Hive on Spark を活用した高速データ分析 - Hadoop / Spark Conference Japan 2016
by
Nagato Kasaki
PDF
Pact言語によるセキュアなスマートコントラクト開発
by
Nagato Kasaki
PDF
20190712 polkadot japan meetup
by
Nagato Kasaki
PDF
Sparkを活用したレコメンドエンジンのパフォーマンスチューニング&自動化
by
Nagato Kasaki
PDF
暗号通貨輪読会 #20 bloXroute
by
Nagato Kasaki
ゼロから始めるSparkSQL徹底活用!
by
Nagato Kasaki
Hive on Spark を活用した高速データ分析 - Hadoop / Spark Conference Japan 2016
by
Nagato Kasaki
Pact言語によるセキュアなスマートコントラクト開発
by
Nagato Kasaki
20190712 polkadot japan meetup
by
Nagato Kasaki
Sparkを活用したレコメンドエンジンのパフォーマンスチューニング&自動化
by
Nagato Kasaki
暗号通貨輪読会 #20 bloXroute
by
Nagato Kasaki
Recently uploaded
PDF
第21回 Gen AI 勉強会「NotebookLMで60ページ超の スライドを作成してみた」
by
嶋 是一 (Yoshikazu SHIMA)
PDF
2025→2026宙畑ゆく年くる年レポート_100社を超える企業アンケート総まとめ!!_企業まとめ_1229_3版
by
sorabatake
PDF
自転車ユーザ参加型路面画像センシングによる点字ブロック検出における性能向上方法の模索 (20260123 SeMI研)
by
Yuto Matsuda
PDF
PMBOK 7th Edition Project Management Process Scrum
by
akipii ogaoga
PDF
Starlink Direct-to-Cell (D2C) 技術の概要と将来の展望
by
CRI Japan, Inc.
PDF
PMBOK 7th Edition_Project Management Context Diagram
by
akipii ogaoga
PDF
ST2024_PM1_2_Case_study_of_local_newspaper_company.pdf
by
akipii ogaoga
PDF
Team Topology Adaptive Organizational Design for Rapid Delivery of Valuable S...
by
akipii ogaoga
PDF
100年後の知財業界-生成AIスライドアドリブプレゼン イーパテントYouTube配信
by
e-Patent Co., Ltd.
PDF
FY2025 IT Strategist Afternoon I Question-1 Balanced Scorecard
by
akipii ogaoga
PDF
Reiwa 7 IT Strategist Afternoon I Question-1 3C Analysis
by
akipii ogaoga
PDF
PMBOK 7th Edition_Project Management Process_WF Type Development
by
akipii ogaoga
PDF
Reiwa 7 IT Strategist Afternoon I Question-1 Ansoff's Growth Vector
by
akipii ogaoga
第21回 Gen AI 勉強会「NotebookLMで60ページ超の スライドを作成してみた」
by
嶋 是一 (Yoshikazu SHIMA)
2025→2026宙畑ゆく年くる年レポート_100社を超える企業アンケート総まとめ!!_企業まとめ_1229_3版
by
sorabatake
自転車ユーザ参加型路面画像センシングによる点字ブロック検出における性能向上方法の模索 (20260123 SeMI研)
by
Yuto Matsuda
PMBOK 7th Edition Project Management Process Scrum
by
akipii ogaoga
Starlink Direct-to-Cell (D2C) 技術の概要と将来の展望
by
CRI Japan, Inc.
PMBOK 7th Edition_Project Management Context Diagram
by
akipii ogaoga
ST2024_PM1_2_Case_study_of_local_newspaper_company.pdf
by
akipii ogaoga
Team Topology Adaptive Organizational Design for Rapid Delivery of Valuable S...
by
akipii ogaoga
100年後の知財業界-生成AIスライドアドリブプレゼン イーパテントYouTube配信
by
e-Patent Co., Ltd.
FY2025 IT Strategist Afternoon I Question-1 Balanced Scorecard
by
akipii ogaoga
Reiwa 7 IT Strategist Afternoon I Question-1 3C Analysis
by
akipii ogaoga
PMBOK 7th Edition_Project Management Process_WF Type Development
by
akipii ogaoga
Reiwa 7 IT Strategist Afternoon I Question-1 Ansoff's Growth Vector
by
akipii ogaoga
Sparkで始めるお手軽グラフデータ分析
1.
/ 33 Sparkで始める お手軽グラフデータ分析 ビッグデータ部 加嵜長門 2016年5月11日 『詳解Apache
Spark』出版記念
2.
/ 33 自己紹介 • 加嵜
長門 • 2014年4月~ DMM.comラボ • Hadoop基盤構築 • Spark MLlib, GraphXを用いたレコメンド開発 • 『詳解 Apache Spark』では「8章 GraphX」を執筆 2
3.
/ 33 Spark GraphX
周りの話題 • Hadoop/Spark Conference Japan 2016 • 2016年2月8日 • キーノートでのアンケート結果 • GraphX… 3 Spark Conference Japan 開催にあたって(Hadoop / Spark Conference Japan 2016 キーノート講演資料) http://www.slideshare.net/hadoopconf/spark-conference-japan2016-keynote-saruta
4.
/ 33 Spark GraphX
周りの話題 • GraphFramesの登場 • Databricksが2016年3月3日にリリース • http://graphframes.github.io/ • Spark GraphX と DataFrames (SparkSQL) の統合 • 利用数の多いDataFramesを用いて、手軽にグラフデータが扱える • 事例も増えそう・・・? 4
5.
/ 33 そもそもグラフデータとは • “つながり”を表現するデータ構造 •
cf. ER図 5 entity entityrelation node/vertex relation/edge attribute attribute
6.
/ 33 グラフデータの具体例 • ソーシャルグラフ •
人と人とのつながり 6 ASSIOMA:オルタナティブ・ブログ: 「あの人検索スパイシー」の「相関図」 http://blogs.itmedia.co.jp/assioma/2010/08/kdditwitter-689.html
7.
/ 33 グラフデータの具体例 • 路線図 •
地図グラフ • 駅と駅のつながり(路線) 7 goo地図 - 首都圏JRの路線図 http://map.goo.ne.jp/station/map/tokyo_jr/
8.
/ 33 グラフデータの具体例 • インターネット •
Webグラフ • ページとページのリンク 8 HOME Contents Purchase Contact
9.
/ 33 グラフデータの具体例 • 家系図 •
親子のつながり 9 家系図作成本舗 -織田信長の家系図 http://www.e-keizu.com/kakeizu/nobunaga.html
10.
/ 33 グラフ以外のデータ構造 • 配列 •
ベクトル、行列 • 連想配列 • オブジェクト • リスト • 関係(リレーション) • etc… 10 1 2 3 4 5 6 7 8 9 { a1: v1 a2: v2 } A B C
11.
/ 33 それぞれのデータ構造を用いたモデリング • 友人関係の表現方法 •
無数にある 11 A B C A B C A 0 1 1 B 0 0 1 C 0 0 0 A B C グラフ構造 隣接行列
12.
/ 33 よくある質問 • 「それってグラフじゃないとできないの?」 →
多くの場合は他の選択肢もある • RDB、行列、etc. • さまざまなデータ構造や分析手法を活用して、多角的な視点を 持つことが重要 12
13.
/ 33 グラフの活用例 • レコメンド •
趣味が合うユーザとの つながり • 関心のある商品との つながり 13 技術評論社: Hadoopでレコメンドシステムを作ろう http://gihyo.jp/dev/serial/01/recommend_hadoop/0001
14.
/ 33 グラフの活用例 • マーケティング •
ネットワークビジネス • バイラルマーケティング • インフルエンサーマーケティング • 口コミを使ったマーケティング • 影響力の強いユーザの抽出 • クラスター分析 14 マーケティング用語集 - インフルエンサー・マーケティングとは http://www.spi-consultants.com/ja/terms/archives/influence-marketing.php
15.
/ 33 グラフの活用例 • 不正検知 •
偽装保険金詐取 • 運転手 • 乗客 • 弁護士 • 医者 15 Linkurious - Whiplash for cash : using graphs for fraud detection https://linkurio.us/whiplash-for-cash-using-graphs-for-fraud-detection/
16.
/ 33 グラフの活用例 • 不正検知 •
偽装保険金詐取 • 少人数で何度も事故に 巻き込まれている ケースを抽出 16 Linkurious - Whiplash for cash : using graphs for fraud detection https://linkurio.us/whiplash-for-cash-using-graphs-for-fraud-detection/
17.
/ 33 グラフの活用例 • 不正検知 •
クレジットカード詐欺 • 少数の人数で、住所や 電話番号を使い回している ケースを抽出 17 Improving First-Party Bank Fraud Detection with Graph Databases http://neo4j.com/blog/first-party-bank-fraud-detection-graph-databases/
18.
/ 33 グラフの活用例 • 「パナマ文書」解析 •
多くの会社(ペーパーカンパニーを含む)を流れるお金の流れを分析 18 Medium - 「パナマ文書」解析の技術的側面 https://medium.com/@c_z/パナマ文書-解析の技術的側面-d10201bbe195#.nvxvolgn8
19.
/ 33 グラフ処理系プロダクト • グラフDB •
グラフデータを構造化 • グラフに対してクエリを投げる • 例) Neo4j, Titan • グラフ処理 • グラフ処理の流れを記述 • 処理系に対してグラフデータを投げる • 例) Spark GraphX, GraphLab 19 グラフデータ グラフ処理 クエリ クエリ クエリ グラフ グラフ グラフ
20.
/ 33 Spark GraphXのメリット •
vs. グラフDB • 分散処理による高スループット • 耐障害性 • vs. 他のグラフ処理系 • グラフに特化しない汎用的なデータ構造 • 表形式やベクトルとシームレスに結合できる 20 https://amplab.github.io/graphx/
21.
/ 33 Spark GraphX
– グラフの作成 • RDDから作成 • Generatorで自動生成 21 scala> val graph = Graph(nodes, relations) scala> GraphGenerators.logNormalGraph(sc, numVertices = 5, mu = 4.0, sigma = 1.3) scala> GraphGenerators.rmatGraph(sc, requestedNumVertices = 10, numEdges = 10)
22.
/ 33 Spark GraphX
– グラフ分析 • グラフの特徴量を取得 22 // 位数(頂点の数)を取得 scala> graph.numVertices res0: Long = 3 // サイズ(辺の数)を取得 scala> graph.numEdges res1: Long = 3 // 各頂点の次数(接する辺の数)を取得 scala> graph.degrees.collect.foreach(println(_)) (2,2) (1,2) (3,2)
23.
/ 33 GraphFrames –
グラフの作成 23 // graphframesパッケージのインポート scala> import org.graphframes._ import org.graphframes._ // Vertex(頂点)となるDataFrameを作成 scala> val v = sqlContext.createDataFrame(List( | (0L, "user", "u1"), | (1L, "user", "u2"), | (2L, "item", "i1"), | (3L, "item", "i2"), | (4L, "item", "i3"), | (5L, "item", "i4") | )).toDF("id", "type", "name") v: org.apache.spark.sql.DataFrame = [id: bigint, type: string, name: string] u1 u2 ユーザ i1 i2 i3 i4 アイテム
24.
/ 33 GraphFrames –
グラフの作成 24 // Edge(辺)となるDataFrameを作成 scala> val e = sqlContext.createDataFrame(List( | (0L, 2L, "purchase"), | (0L, 3L, "purchase"), | (0L, 4L, "purchase"), | (1L, 3L, "purchase"), | (1L, 4L, "purchase"), | (1L, 5L, "purchase") | )).toDF("src", "dst", "type") e: org.apache.spark.sql.DataFrame = [src: bigint, dst: bigint, type: string] // GraphFrameを作成 scala> val g = GraphFrame(v, e) g: org.graphframes.GraphFrame = GraphFrame(v:[id: bigint, attr: string, gender: string], e:[src: bigint, dst: bigint, relationship: string]) u1 u2 i1 i2 i3 i4 購入ログ
25.
/ 33 GraphFrames –
アイテムレコメンドの実行例 25 // レコメンドアイテムの問い合わせ例 scala> g.find( | " (a)-[]->(x); (b)-[]->(x);" + | " (b)-[]->(y); !(a)-[]->(y)" | ).groupBy( | "a.name", "y.name" | ).count().show() +----+----+-----+ |name|name|count| +----+----+-----+ | u1| i4| 2| | u2| i1| 2| +----+----+-----+ u1 u2 i1 i2 i3 i4 共通の商品を 購入したユーザ まだ購入していないアイテムをレコメンド (b) (y) (a) (x)
26.
/ 33 GraphFrames –
サンプルグラフの利用 (1) 26 // スターグラフを作成 scala> val star = examples.Graphs.star(5) // Tripletsを表示 scala> star.triplets.show() +------------+----------+--------+ | edge| src| dst| +------------+----------+--------+ |[1,0,edge-1]|[1,node-1]|[0,root]| |[2,0,edge-2]|[2,node-2]|[0,root]| |[3,0,edge-3]|[3,node-3]|[0,root]| |[4,0,edge-4]|[4,node-4]|[0,root]| |[5,0,edge-5]|[5,node-5]|[0,root]| +------------+----------+--------+ 0 1 2 3 4 5 node-1 node-2 node-3 node-4 node-5 root edge-1 edge-2 edge-3 edge-4 edge-5
27.
/ 33 GraphFrames –
PageRankの実行例 27 // PageRankを計算 scala> val pr = g.pageRank.resetProbability(0.1).tol(0.01).run() // PageRankのスコアを表示 scala> pr.vertices.show() +---+-------+--------+ | id|v_attr1|pagerank| +---+-------+--------+ | 0| root| 0.55| | 1| node-1| 0.1| | 2| node-2| 0.1| | 3| node-3| 0.1| | 4| node-4| 0.1| | 5| node-5| 0.1| +---+-------+--------+ 0 1 2 3 4 5 0.1 0.1 0.1 0.1 0.1 0.55
28.
/ 33 GraphFrames –
サンプルグラフの利用 (2) 28 // 友達関係のサンプルグラフを作成 scala> val friends = examples.Graphs.friends // Tripletsを表示 scala> friends.triplets.show() +------------+--------------+--------------+ | edge| src| dst| +------------+--------------+--------------+ |[a,b,friend]| [a,Alice,34]| [b,Bob,36]| |[b,c,follow]| [b,Bob,36]|[c,Charlie,30]| |[c,b,follow]|[c,Charlie,30]| [b,Bob,36]| |[f,c,follow]| [f,Fanny,36]|[c,Charlie,30]| |[e,f,follow]| [e,Esther,32]| [f,Fanny,36]| |[e,d,friend]| [e,Esther,32]| [d,David,29]| |[d,a,friend]| [d,David,29]| [a,Alice,34]| |[a,e,friend]| [a,Alice,34]| [e,Esther,32]| +------------+--------------+--------------+ a b c de f g Alice, 34 Bob, 36 Charlie, 30 Fanny, 36 Esther, 32 David, 29 Gabby, 60 friend friend friend follow follow follow friend
29.
/ 33 a GraphFrames –
最短距離を計算 29 // すべてのユーザからユーザ “a” までの最短距離を計算 scala> val d1 = friends.shortestPaths.landmarks(Seq("a")).run() // 結果を表示 scala> d1.show() +---+-------+---+-----------+ | id| name|age| distances| +---+-------+---+-----------+ | f| Fanny| 36| Map()| | g| Gabby| 60| Map()| | a| Alice| 34|Map(a -> 0)| | b| Bob| 36| Map()| | c|Charlie| 30| Map()| | d| David| 29|Map(a -> 1)| | e| Esther| 32|Map(a -> 2)| +---+-------+---+-----------+ a b c de f a -> 0 g a -> 2 a -> 1
30.
/ 33 a c GraphFrames –
最短距離を計算 30 // すべてのユーザからユーザ “a”, “c” までの最短距離を計算 scala> val d2 = friends.shortestPaths.landmarks(Seq("a", "c")).run() // 結果を表示 scala> d2.show() +---+-------+---+-------------------+ | id| name|age| distances| +---+-------+---+-------------------+ | f| Fanny| 36| Map(c -> 1)| | g| Gabby| 60| Map()| | a| Alice| 34|Map(a -> 0, c -> 2)| | b| Bob| 36| Map(c -> 1)| | c|Charlie| 30| Map(c -> 0)| | d| David| 29|Map(a -> 1, c -> 3)| | e| Esther| 32|Map(a -> 2, c -> 2)| +---+-------+---+-------------------+ a b c de f g a -> 0 c -> 2 a -> 2 c -> 2 a -> 1 c -> 3 c -> 0 c -> 1 c -> 1
31.
/ 33 a b c d GraphFrames –
最短経路の探索 31 // ユーザ “d”から“c” への最短経路を探索 scala> val path = friends.bfs.fromExpr("id = 'd'").toExpr("id = 'c'").run() // 結果を表示 scala> path.show() +------------+------------+------------+ | from| e0| v1| +------------+------------+------------+ |[d,David,29]|[d,a,friend]|[a,Alice,34]| +------------+------------+------------+ +------------+----------+------------+--------------+ | e1| v2| e2| to| +------------+----------+------------+--------------+ |[a,b,friend]|[b,Bob,36]|[b,c,follow]|[c,Charlie,30]| +------------+----------+------------+--------------+ a b c de f g Alice, 34 Bob, 36 Charlie, 30 David, 29 friend follow friend
32.
/ 33 Spark GraphX
– グラフ処理 • グラフアルゴリズムの適用 32 // triangeCountを取得 scala> val triangleCounts = graph.triangleCount // クラスタ係数を計算 scala> val clusteringCoefficients = | triangleCounts.mapVertices((id, count) => | count.toDouble | ).joinVertices(degrees)((id, count, degree) => { | degree match { | case d if d > 1 => count * 2 / (d * (d - 1)) | case _ => 0.0 | }})
33.
/ 33 Spark GraphX
– グラフ処理 • 続きは・・・ 33 http://gihyo.jp/book/2016/978-4-7741-8124-0
Download