SlideShare ist ein Scribd-Unternehmen logo
1 von 44
Downloaden Sie, um offline zu lesen
GraphXによるグラフ分析処理の実例と入門
freee 株式会社 土佐鉄平
1
found IT projectセミナー#6
About me
freee 株式会社 土佐鉄平
● ソフトウェアエンジニア
● 三代目巨匠
● チーフセキュリティアーキテクト
略歴
● 某金融機関システム子会社で13年勤務
○ 前半8年は基幹系フロントシステムを担当
○ 後半5年は研究開発部門マネージャを担当
■ ビッグデータ技術等を導入推進
● freee株式会社
○ 記帳系、請求書周りを担当
○ CSIRTも兼務
○ 巨匠制度でデータ分析を活用したビジネスプラット
フォーム関連の開発を実施
@teppei-tosa
http://teppei.hateblo.jp
2
本日お話ししたいこと
グラフ分析ではどういうことができるのか
freeeではグラフ分析をどのように活用しているのか
GraphX でグラフ分析はどのようにできるのか
3
Overview
● 会計freee と ビジネスプラットフォーム構想
○ 会計freeeとは
○ ビジネスプラットフォーム構想とは
○ スマート請求書とは
○ 取引ネットワーク推測機能とは
● 取引ネットワーク推測のにおけるグラフ分析
○ Connected Component によってどれだけつながっているか確認
○ Degreesを確認してつながりすぎているのを見つける
● GraphXによるグラフ分析
○ graphの作り方
○ Connected Component の使い方
○ Pregelとは
○ Connected Component で知る Pregel の使い方
4
会計freee と ビジネスプラットフォーム構想
5
freeeのプロダクト
クラウド会計ソフトシェアNo.1
7
有効事業所数は 70万事業所を突破
【1年間で2倍以上の伸び】
freee 有効事業所数(2016年1月)
会計ソフトおよび給与計算ソフトの利用を目的
として登録した事業所のみをカウント
* デジタルインファクト調べ(2015年12月時点)
クラウド会計ソフト市場
マーケットシェア *
(法人・個人)
ビジネスプラットフォーム構想とは
8
取引効率化
機会創出
経営効率化
スマートビジネスプラットフォーム
ビジネスのやりとりが全てfreee 上で完結
決済
受発注 ネッティング
ビジネスマッチング
在庫管理
ファクタリング
経営統計
データ
請求
入金管理
スマート請求書とは
9
freee 上で請求書のやり取りを完結させることで、
受け取った請求書の処理時間を1/8に短縮する
取引ネットワーク推測とは
● 情報公開を許可している企業同士が、よりfreeeを活用できる仕組み
● スマート請求書に続く「企業間取引プラットフォーム」施策の第2弾
10
取引ネットワーク推測とは
● 事業所に設定されている「取引先」と、他の事業所の一致予測を実施
● freeeの中でも、実取引としてもつながっている事業所を見つけ出す
● 事業所の「公開設定」機能を提供
○ 予測確度に応じて、公開対象と公開範囲を設定可能
○ 例:確度・高に対しては、住所を公開
● 取引先が freee の利用事業所で、情報公開しているならば、スマート請求書の利用を
推奨したり、相手事業所の名称や住所をコピー可能
11
取引ネットワーク推測におけるグラフ分析
12
Graph とは
● 頂点(vertex)と辺(edge)の集まり
● 辺は方向(direction)を持つことができる
● 頂点と辺はそれぞれ属性(attribute)を持つことができる
13
● Connected Component (連結成分)とは、(難しい定義はよくわからないけど)、要は、
辺でつながっている頂点の集まり
● 大きすぎる 連結成分 が存在するようであれば、不正に辺を集めている頂点が存在す
ることを疑う
● ただしシェアが拡大すれば、ひとつの連結成分がほとんどの頂点を含むようになる
Connected Component による分析
14
Degrees の分析
● 頂点とつながる辺の数を「次数(degrees)」と呼ぶ
● 頂点に入ってくる辺の数を「入次数(in-degreees)」
● 頂点から出る辺の数を「出次数(out-degrees)」
● 次数の多い順に sort して 上位10件を確認するなどして、巨大な連結成分の原因と
なっている頂点を探す
● そうすると、紐つけロジックの不備が大体推測できて、見直しをする
15
degrees: 5, in-degrees: 2, out-degrees: 3
GraphXによるグラフ分析
16
GraphXとは
● GraphX は、Apache Sparkのコンポーネントの一つで、大容量グラフ構造データの並列
分散処理を実装するためのフレームワーク
● ETL、機会学習、クエリ、グラフ分析をひとつのアプリケーション内でシームレスに実装
できる
● GraphX自体が Spark で実装されているため、GraphX の内部実装の把握と、Sparkア
プリを実装することの距離が近いことも魅力
17
graph の作り方
● 例えば別の大規模グラフデータ分析フレームワークの Apache Giraph では、以下のよ
うにグラフデータの形に変換したデータを読み込む必要がある
[1, 100, [[2, 100]] ]
[2, 200, [[3, 200]] ]
[3, 300, [[1, 100]] ]
● GraphXでは、以下のように表構造のデータから
グラフオブジェクトを作ることができる
18
id name value
1 taro 100
2 jiro 200
3 saburo 300
id from to value
1 1 2 100
2 2 3 200
3 3 1 300
master.csv connection.csv
1
3
2
(taro, 100)
(jiro, 200)
(saburo, 300)
(300)
(100)
(200)
graph の作り方
// 元データを読み込み
val master = sc.textFile(“master.csv”)
val conn = sc.textFile(“connection.csv”)
// 頂点データを生成
val vertices:RDD[(VertexId, String)] = master.map( line => {
val cols = line.split(“,”)
(cols(0).toLong, cols(1))
})
// 辺データを生成
val edges:RDD[Edge[Long]] = conn.map( line => {
val cols = line.split(“,”)
Edge(cols(1).toLong, cols(2).toLong, cols(3).toLong)
})
// 頂点データと辺データからグラフを生成
val graph:Graph[String, Long] = Graph(vertices, edges)
19
Connected Component の分類の仕方
● 各 vertex の id をそれぞれの value にセットして、各 connected component の vertex
の value をその中で最小の値の id になるように分類される
● 実装はこれだけ
val cc:Graph[Long, Int] = graph.connectedComponents
20
4
6
5
1
3
2 4
4
4
1
1
1
degrees の取得
● 次数の取得
val degrees:VertexRDD[Int] = graph.degrees
● 出次数の取得
val outDegrees:VertexRDD[Int] = graph.outDegrees
● 入次数の取得
val inDegrees:VertexRDD[Int] = graph.inDegrees
● 結果は id と 次数の tuple で得られる
21
Pregel とは
● Pregel は Google が開発したグラフアルゴリズムを実装する ためのスケーラブルなプ
ラットフォーム実装
● Google の論文を元に GraphX 内で関数が実装されて利用可能
● API
Pregel(
graph, // 処理対象 グラフデータ
initialMsg:A, // 最初 のイテレーションで送信するメッセージ
maxIter:Int, // 最大何回イテレーションするか
activeDir:EdgeDirection // どちら方向にメッセージ送信するか
)(
// イテレーション毎に頂点で稼動させる処理(A :受信したメッセージ)
vprog:(VertexId, VD, A) => VD,
// イテレーション毎に辺上に何を流すか決定する処理
sendMsg:(EdgeTriplet[VD, ED]) => Iterator[(VertexId, A)],
// 複数 Edge からメッセージを受信した時 処理
mergeMsg:(A, A) => A
// 処理結果として新しいGraphデータを返す
):Graph[VD, ED]
22
Pregel とは
● 簡単なグラフを例に考えてみる
23
1 3
2
Pregel とは
● 引数 initialMsg が全ての辺で流れる
● この処理は最初の iteration でだけ稼働する
24
1 3
2
initialMsg
initialMsg
initialMsg
Pregel とは
● 複数の辺が入ってきている頂点で、各辺から渡ってきた値をどう merge するか実装し
た mergeMsg 関数が稼働する
25
1 3
2
mergeMsg
Pregel とは
● 辺が入ってきている全ての頂点で、入ってきた値をどう処理するかを実装したvprog が
稼働
● ここまでで Iteration 1
26
1 3
2 vprog
vprog
Pregel とは
● 前の iteration で値を受信した頂点から出ている辺で、どんな値を送るか実装した
sendMsg が稼働
27
1 3
2
sendMsg
Pregel とは
● 辺が入ってきている全ての頂点で、入ってきた値をどう処理するかを実装したvprog が
稼働
● 複数値が入ってくる頂点があればこの前に mergeMsg が稼働
● 以上の Iteration が以下のどちらかの条件を満たすまで続く
○ 引数 maxIter で指定された回数続く
○ どの頂点からもメッセージが送信されなくなる
28
1 3
2
vprog
Connected Conponent は Pregel をどう使っているか
29
● 簡単なグラフを例に考えてみる
1 3
2
{ taro }
{ jiro }
{ saburo }
Connected Conponent は Pregel をどう使っているか
30
● 各Vertexの値をVertexのidに置き換える
1 3
2
{ 1 }
{ 2 }
{ 3 }
Connected Conponent は Pregel をどう使っているか
31
● initalMsg として Long.MaxValue を全Edgeで双方向に送信する
1 3
2
Long.MaxValue
Long.MaxValue
Long.MaxValue
{ 1 }
{ 2 }
{ 3 }
Connected Conponent は Pregel をどう使っているか
32
● 複数Edgeが集まっているVertexは流れてくる値の小さい方をとる(つまり
Long.MaxValue)
1 3
2
{ 1 }
{ 2 }
{ 3 }
min(MAX, MAX)
min(MAX, MAX)
min(MAX, Max)
Connected Conponent は Pregel をどう使っているか
33
● 受信したmsgとVertexが持っている値の小さい方をとる(つまりVertexの値の更新なし)
1 3
2
{ 1 }
{ 2 }
{ 3 }
min(MAX, 2)
min(MAX, 1) min(MAX, 3)
Connected Conponent は Pregel をどう使っているか
34
● msgを受信したvertex(つまり全てのvertex)から、小さい方の値を反対側に流すという
ロジックに従ってmsg送信
1 3
2
1
2
1
{ 1 }
{ 2 }
{ 3 }
Connected Conponent は Pregel をどう使っているか
35
● 複数Edgeが集まっているVertexは流れてくる値の小さい方をとる
1 3
2
{ 1 }
{ 2 }
{ 3 }
min(1, 2)
Connected Conponent は Pregel をどう使っているか
36
● 受信したmsgとVertexが持っている値の小さい方をとる(つまりVertexの値の更新なし)
1 3
2
{ 1 }
{ 2 }
{ 3 }
min(1, 2)
min(1, 3)
Connected Conponent は Pregel をどう使っているか
37
● 受信したvertexの値が更新される
● 受信したvertexから値送信しようとするが、どの辺もsrcもdstも同じ値なので送信がさ
れず、これで Iteration 終了
1 3
2
{ 1 }
{ 1 }
{ 1 }
Connected Conponent は Pregel をどう使っているか
● 実装(1)
val cc = Pregel(
// 各頂点の値をVertexのIDに変換したグラフをインプットにする
graph.mapVertices { case (vid, _) => vid },
// Iterationの最初に大きな値をEdgeに流す
Long.MaxValue,
// Iterationの最大回数を変数で指定できるようになっている
maxIterations,
// msgはEdge上を双方向に流す
EdgeDirection.Either
)(
// Edgeを流れてきた値とVertexで持っている値の小さい方をとる
vprog = (id, attr, msg) => math.min(attr, msg),
// Edge上をどうmsg流すかは別途関数を定義
sendMsg = sendMessage,
// 同じVertexに複数のEdgeからmsg来たら、小さい方をとる
mergeMsg = (a, b) => math.min(a, b)
)
38
Connected Conponent は Pregel をどう使っているか
● 実装(2)
// Edge上をどうmsg流すか別途定義した関数
def sendMessage(edge: EdgeTriplet[VertexId, ED])
: Iterator[(VertexId, VertexId)] = {
// src側の値が小さければsrcの値をdstに流す
if (edge.srcAttr < edge.dstAttr) {
Iterator((edge.dstId, edge.srcAttr))
// dst側の値が小さければdstの値をsrcに流す
} else if (edge.srcAttr > edge.dstAttr) {
Iterator((edge.srcId, edge.dstAttr))
// srcとdstの値が同じなら何も流さない
} else {
Iterator.empty
}
}
39
まとめ
40
まとめ
データを「表構造」で扱っていてはできない分析が
グラフ分析ならできる
GraphX なら大規模なグラフデータ分析が
ETL処理や機会学習処理とシームレスに実装できる
GraphXやろう!
41
おまけ:GraphX から GraphFrame へ
● Spark のベースI/Fが RDDからDataFrame に以降するのに伴い、GraphX と
DataFrame が統合したものが、GraphFrame。
● DataFrame をベースに 大規模グラフ分析 を可能にするフレームワーク
● Neo4jで使われている CypherQuery が利用できるのが特徴
● まだ ver 0.3 で、現状は GraphX から手を出しても大丈夫
● いずれは GraphFrame に移行
42
参考サイト
● GraphX Programing Guide
● GraphX Advent Calendar 2014
● Spark graph framesとopencypherによる分散グラフ処理の最新動向
● GraphFrame
43
スモールビジネスに携わるすべての人が
創造的な活動にフォーカスできるよう
44
Question?

Weitere ähnliche Inhalte

Was ist angesagt?

Juliaで学ぶ Hamiltonian Monte Carlo (NUTS 入り)
Juliaで学ぶ Hamiltonian Monte Carlo (NUTS 入り)Juliaで学ぶ Hamiltonian Monte Carlo (NUTS 入り)
Juliaで学ぶ Hamiltonian Monte Carlo (NUTS 入り)Kenta Sato
 
ロックフリーGCLOCKページ置換アルゴリズム
ロックフリーGCLOCKページ置換アルゴリズムロックフリーGCLOCKページ置換アルゴリズム
ロックフリーGCLOCKページ置換アルゴリズムMakoto Yui
 
Rでソーシャルネットワーク分析
Rでソーシャルネットワーク分析Rでソーシャルネットワーク分析
Rでソーシャルネットワーク分析Hiroko Onari
 
ビッグデータ処理データベースの全体像と使い分け
ビッグデータ処理データベースの全体像と使い分けビッグデータ処理データベースの全体像と使い分け
ビッグデータ処理データベースの全体像と使い分けRecruit Technologies
 
ハンドノート T字形ERモデル セミナー資料 (Author; S.Toriyabe SYSTEMS DESIGN Co.,Ltd. Japan)
ハンドノート T字形ERモデル セミナー資料 (Author; S.Toriyabe  SYSTEMS DESIGN Co.,Ltd. Japan) ハンドノート T字形ERモデル セミナー資料 (Author; S.Toriyabe  SYSTEMS DESIGN Co.,Ltd. Japan)
ハンドノート T字形ERモデル セミナー資料 (Author; S.Toriyabe SYSTEMS DESIGN Co.,Ltd. Japan) 聡 鳥谷部
 
Elasticsearch as a Distributed System
Elasticsearch as a Distributed SystemElasticsearch as a Distributed System
Elasticsearch as a Distributed SystemSatoyuki Tsukano
 
(2018.3) 分子のグラフ表現と機械学習
(2018.3) 分子のグラフ表現と機械学習(2018.3) 分子のグラフ表現と機械学習
(2018.3) 分子のグラフ表現と機械学習Ichigaku Takigawa
 
関数型プログラミングのデザインパターンひとめぐり
関数型プログラミングのデザインパターンひとめぐり関数型プログラミングのデザインパターンひとめぐり
関数型プログラミングのデザインパターンひとめぐりKazuyuki TAKASE
 
DDD&Scalaで作られたプロダクトはその後どうなったか?(Current state of products made with DDD & Scala)
DDD&Scalaで作られたプロダクトはその後どうなったか?(Current state of products made with DDD & Scala)DDD&Scalaで作られたプロダクトはその後どうなったか?(Current state of products made with DDD & Scala)
DDD&Scalaで作られたプロダクトはその後どうなったか?(Current state of products made with DDD & Scala)MicroAd, Inc.(Engineer)
 
Reladomoを使ったトランザクション履歴管理をプロダクトに適用した際のメリット/デメリット/課題など
Reladomoを使ったトランザクション履歴管理をプロダクトに適用した際のメリット/デメリット/課題などReladomoを使ったトランザクション履歴管理をプロダクトに適用した際のメリット/デメリット/課題など
Reladomoを使ったトランザクション履歴管理をプロダクトに適用した際のメリット/デメリット/課題などなべ
 
BigQuery で 150万円 使ったときの話
BigQuery で 150万円 使ったときの話BigQuery で 150万円 使ったときの話
BigQuery で 150万円 使ったときの話itkr
 
Visual studio2013からGithubへPushする方法
Visual studio2013からGithubへPushする方法Visual studio2013からGithubへPushする方法
Visual studio2013からGithubへPushする方法Takuya Kawabe
 
ドメイン駆動設計 本格入門
ドメイン駆動設計 本格入門ドメイン駆動設計 本格入門
ドメイン駆動設計 本格入門増田 亨
 
システム開発について
システム開発についてシステム開発について
システム開発についてSawada Makoto
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」Takuto Wada
 
グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介
グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介
グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介ippei_suzuki
 
DiagrammeRと仲良くなった話ーグラフィカルモデルのためのDiagrammeR速習ー
DiagrammeRと仲良くなった話ーグラフィカルモデルのためのDiagrammeR速習ーDiagrammeRと仲良くなった話ーグラフィカルモデルのためのDiagrammeR速習ー
DiagrammeRと仲良くなった話ーグラフィカルモデルのためのDiagrammeR速習ーTakashi Yamane
 
会社でClojure使ってみて分かったこと
会社でClojure使ってみて分かったこと会社でClojure使ってみて分かったこと
会社でClojure使ってみて分かったことRecruit Technologies
 

Was ist angesagt? (20)

Juliaで学ぶ Hamiltonian Monte Carlo (NUTS 入り)
Juliaで学ぶ Hamiltonian Monte Carlo (NUTS 入り)Juliaで学ぶ Hamiltonian Monte Carlo (NUTS 入り)
Juliaで学ぶ Hamiltonian Monte Carlo (NUTS 入り)
 
ロックフリーGCLOCKページ置換アルゴリズム
ロックフリーGCLOCKページ置換アルゴリズムロックフリーGCLOCKページ置換アルゴリズム
ロックフリーGCLOCKページ置換アルゴリズム
 
Rでソーシャルネットワーク分析
Rでソーシャルネットワーク分析Rでソーシャルネットワーク分析
Rでソーシャルネットワーク分析
 
ビッグデータ処理データベースの全体像と使い分け
ビッグデータ処理データベースの全体像と使い分けビッグデータ処理データベースの全体像と使い分け
ビッグデータ処理データベースの全体像と使い分け
 
ハンドノート T字形ERモデル セミナー資料 (Author; S.Toriyabe SYSTEMS DESIGN Co.,Ltd. Japan)
ハンドノート T字形ERモデル セミナー資料 (Author; S.Toriyabe  SYSTEMS DESIGN Co.,Ltd. Japan) ハンドノート T字形ERモデル セミナー資料 (Author; S.Toriyabe  SYSTEMS DESIGN Co.,Ltd. Japan)
ハンドノート T字形ERモデル セミナー資料 (Author; S.Toriyabe SYSTEMS DESIGN Co.,Ltd. Japan)
 
Elasticsearch as a Distributed System
Elasticsearch as a Distributed SystemElasticsearch as a Distributed System
Elasticsearch as a Distributed System
 
(2018.3) 分子のグラフ表現と機械学習
(2018.3) 分子のグラフ表現と機械学習(2018.3) 分子のグラフ表現と機械学習
(2018.3) 分子のグラフ表現と機械学習
 
関数型プログラミングのデザインパターンひとめぐり
関数型プログラミングのデザインパターンひとめぐり関数型プログラミングのデザインパターンひとめぐり
関数型プログラミングのデザインパターンひとめぐり
 
DDD&Scalaで作られたプロダクトはその後どうなったか?(Current state of products made with DDD & Scala)
DDD&Scalaで作られたプロダクトはその後どうなったか?(Current state of products made with DDD & Scala)DDD&Scalaで作られたプロダクトはその後どうなったか?(Current state of products made with DDD & Scala)
DDD&Scalaで作られたプロダクトはその後どうなったか?(Current state of products made with DDD & Scala)
 
ゼロから始めるQ#
ゼロから始めるQ#ゼロから始めるQ#
ゼロから始めるQ#
 
Reladomoを使ったトランザクション履歴管理をプロダクトに適用した際のメリット/デメリット/課題など
Reladomoを使ったトランザクション履歴管理をプロダクトに適用した際のメリット/デメリット/課題などReladomoを使ったトランザクション履歴管理をプロダクトに適用した際のメリット/デメリット/課題など
Reladomoを使ったトランザクション履歴管理をプロダクトに適用した際のメリット/デメリット/課題など
 
BigQuery で 150万円 使ったときの話
BigQuery で 150万円 使ったときの話BigQuery で 150万円 使ったときの話
BigQuery で 150万円 使ったときの話
 
Visual studio2013からGithubへPushする方法
Visual studio2013からGithubへPushする方法Visual studio2013からGithubへPushする方法
Visual studio2013からGithubへPushする方法
 
ドメイン駆動設計 本格入門
ドメイン駆動設計 本格入門ドメイン駆動設計 本格入門
ドメイン駆動設計 本格入門
 
システム開発について
システム開発についてシステム開発について
システム開発について
 
Di入門
Di入門Di入門
Di入門
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
 
グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介
グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介
グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介
 
DiagrammeRと仲良くなった話ーグラフィカルモデルのためのDiagrammeR速習ー
DiagrammeRと仲良くなった話ーグラフィカルモデルのためのDiagrammeR速習ーDiagrammeRと仲良くなった話ーグラフィカルモデルのためのDiagrammeR速習ー
DiagrammeRと仲良くなった話ーグラフィカルモデルのためのDiagrammeR速習ー
 
会社でClojure使ってみて分かったこと
会社でClojure使ってみて分かったこと会社でClojure使ってみて分かったこと
会社でClojure使ってみて分かったこと
 

Andere mochten auch

Reactテストに役立つ実装の工夫
Reactテストに役立つ実装の工夫Reactテストに役立つ実装の工夫
Reactテストに役立つ実装の工夫鉄平 土佐
 
Spark Streaming と Spark GraphX を使用したTwitter解析による レコメンドサービス例
Spark Streaming と Spark GraphX を使用したTwitter解析による レコメンドサービス例Spark Streaming と Spark GraphX を使用したTwitter解析による レコメンドサービス例
Spark Streaming と Spark GraphX を使用したTwitter解析による レコメンドサービス例Junichi Noda
 
Spark GraphX で始めるグラフ解析
Spark GraphX で始めるグラフ解析Spark GraphX で始めるグラフ解析
Spark GraphX で始めるグラフ解析Yosuke Mizutani
 
La semaine pour les alternatives aux pesticides
La semaine pour les alternatives aux pesticidesLa semaine pour les alternatives aux pesticides
La semaine pour les alternatives aux pesticidesDES Daughter
 
IEC Tech January 2017
IEC Tech January 2017IEC Tech January 2017
IEC Tech January 2017Mari Kimura
 
4st year worksheet world organization in the sport
4st year worksheet world organization in the sport4st year worksheet world organization in the sport
4st year worksheet world organization in the sportCiclos Formativos
 
Code reviews vs Pull requests
Code reviews vs Pull requestsCode reviews vs Pull requests
Code reviews vs Pull requestsTim Pettersen
 

Andere mochten auch (12)

Reactテストに役立つ実装の工夫
Reactテストに役立つ実装の工夫Reactテストに役立つ実装の工夫
Reactテストに役立つ実装の工夫
 
Spark Streaming と Spark GraphX を使用したTwitter解析による レコメンドサービス例
Spark Streaming と Spark GraphX を使用したTwitter解析による レコメンドサービス例Spark Streaming と Spark GraphX を使用したTwitter解析による レコメンドサービス例
Spark Streaming と Spark GraphX を使用したTwitter解析による レコメンドサービス例
 
Spark GraphX で始めるグラフ解析
Spark GraphX で始めるグラフ解析Spark GraphX で始めるグラフ解析
Spark GraphX で始めるグラフ解析
 
La semaine pour les alternatives aux pesticides
La semaine pour les alternatives aux pesticidesLa semaine pour les alternatives aux pesticides
La semaine pour les alternatives aux pesticides
 
IEC Tech January 2017
IEC Tech January 2017IEC Tech January 2017
IEC Tech January 2017
 
Open E-Books in Bibliotheken
Open E-Books in BibliothekenOpen E-Books in Bibliotheken
Open E-Books in Bibliotheken
 
4st year worksheet world organization in the sport
4st year worksheet world organization in the sport4st year worksheet world organization in the sport
4st year worksheet world organization in the sport
 
Code reviews vs Pull requests
Code reviews vs Pull requestsCode reviews vs Pull requests
Code reviews vs Pull requests
 
Sap mm online training course
Sap mm online training courseSap mm online training course
Sap mm online training course
 
Google data studio eshow 2017 clinicseo
Google data studio   eshow 2017 clinicseoGoogle data studio   eshow 2017 clinicseo
Google data studio eshow 2017 clinicseo
 
Sap bw on hana ramireddy ppt
Sap bw on hana ramireddy pptSap bw on hana ramireddy ppt
Sap bw on hana ramireddy ppt
 
Ejemplo Plan de Marketing Digital
Ejemplo Plan de Marketing DigitalEjemplo Plan de Marketing Digital
Ejemplo Plan de Marketing Digital
 

Ähnlich wie GraphX によるグラフ分析処理の実例と入門

Pact言語によるセキュアなスマートコントラクト開発
Pact言語によるセキュアなスマートコントラクト開発Pact言語によるセキュアなスマートコントラクト開発
Pact言語によるセキュアなスマートコントラクト開発Nagato Kasaki
 
20180109 titech lecture_ishizaki_public
20180109 titech lecture_ishizaki_public20180109 titech lecture_ishizaki_public
20180109 titech lecture_ishizaki_publicKazuaki Ishizaki
 
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
PosGIS/pgRoutingとRの連携による道路ネットワーク分析(埼玉大学・国府田様)
PosGIS/pgRoutingとRの連携による道路ネットワーク分析(埼玉大学・国府田様)PosGIS/pgRoutingとRの連携による道路ネットワーク分析(埼玉大学・国府田様)
PosGIS/pgRoutingとRの連携による道路ネットワーク分析(埼玉大学・国府田様)OSgeo Japan
 
2015年度GPGPU実践プログラミング 第7回 総和計算
2015年度GPGPU実践プログラミング 第7回 総和計算2015年度GPGPU実践プログラミング 第7回 総和計算
2015年度GPGPU実践プログラミング 第7回 総和計算智啓 出川
 
「C言語規格&MISRA-C:みんなで楽しいCプログラミング」NGK2013B名古屋合同懇親会2013忘年会昼の部
「C言語規格&MISRA-C:みんなで楽しいCプログラミング」NGK2013B名古屋合同懇親会2013忘年会昼の部「C言語規格&MISRA-C:みんなで楽しいCプログラミング」NGK2013B名古屋合同懇親会2013忘年会昼の部
「C言語規格&MISRA-C:みんなで楽しいCプログラミング」NGK2013B名古屋合同懇親会2013忘年会昼の部Kiyoshi Ogawa
 
ソフトウェア志向の組込みシステム協調設計環境
ソフトウェア志向の組込みシステム協調設計環境ソフトウェア志向の組込みシステム協調設計環境
ソフトウェア志向の組込みシステム協調設計環境Hideki Takase
 
DTrace for biginners part(2)
DTrace for biginners part(2)DTrace for biginners part(2)
DTrace for biginners part(2)Shoji Haraguchi
 
Digdagを用いた大規模広告配信ログデータの加工と運用
Digdagを用いた大規模広告配信ログデータの加工と運用Digdagを用いた大規模広告配信ログデータの加工と運用
Digdagを用いた大規模広告配信ログデータの加工と運用MicroAd, Inc.(Engineer)
 
Amazon EKSによるスケーラブルなCTR予測システム
Amazon EKSによるスケーラブルなCTR予測システムAmazon EKSによるスケーラブルなCTR予測システム
Amazon EKSによるスケーラブルなCTR予測システム駿哉 吉田
 
IoT時代におけるストリームデータ処理と急成長の Apache Flink
IoT時代におけるストリームデータ処理と急成長の Apache FlinkIoT時代におけるストリームデータ処理と急成長の Apache Flink
IoT時代におけるストリームデータ処理と急成長の Apache FlinkTakanori Suzuki
 
PL/CUDA - Fusion of HPC Grade Power with In-Database Analytics
PL/CUDA - Fusion of HPC Grade Power with In-Database AnalyticsPL/CUDA - Fusion of HPC Grade Power with In-Database Analytics
PL/CUDA - Fusion of HPC Grade Power with In-Database AnalyticsKohei KaiGai
 
OpenTelemetryでWebシステムの処理を追跡しよう - DjangoCongress JP 2022
OpenTelemetryでWebシステムの処理を追跡しよう - DjangoCongress JP 2022OpenTelemetryでWebシステムの処理を追跡しよう - DjangoCongress JP 2022
OpenTelemetryでWebシステムの処理を追跡しよう - DjangoCongress JP 2022Takayuki Shimizukawa
 
KamonとDatadogによるリアクティブアプリケーションの監視の事例
KamonとDatadogによるリアクティブアプリケーションの監視の事例KamonとDatadogによるリアクティブアプリケーションの監視の事例
KamonとDatadogによるリアクティブアプリケーションの監視の事例Ikuo Matsumura
 
運用中のゲームにAIを導入するには〜プロジェクト推進・ユースケース・運用〜 [DeNA TechCon 2019]
運用中のゲームにAIを導入するには〜プロジェクト推進・ユースケース・運用〜 [DeNA TechCon 2019]運用中のゲームにAIを導入するには〜プロジェクト推進・ユースケース・運用〜 [DeNA TechCon 2019]
運用中のゲームにAIを導入するには〜プロジェクト推進・ユースケース・運用〜 [DeNA TechCon 2019]DeNA
 

Ähnlich wie GraphX によるグラフ分析処理の実例と入門 (20)

Pact言語によるセキュアなスマートコントラクト開発
Pact言語によるセキュアなスマートコントラクト開発Pact言語によるセキュアなスマートコントラクト開発
Pact言語によるセキュアなスマートコントラクト開発
 
20180109 titech lecture_ishizaki_public
20180109 titech lecture_ishizaki_public20180109 titech lecture_ishizaki_public
20180109 titech lecture_ishizaki_public
 
pg_bigmを用いた全文検索のしくみ(前編)
pg_bigmを用いた全文検索のしくみ(前編)pg_bigmを用いた全文検索のしくみ(前編)
pg_bigmを用いた全文検索のしくみ(前編)
 
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PosGIS/pgRoutingとRの連携による道路ネットワーク分析(埼玉大学・国府田様)
PosGIS/pgRoutingとRの連携による道路ネットワーク分析(埼玉大学・国府田様)PosGIS/pgRoutingとRの連携による道路ネットワーク分析(埼玉大学・国府田様)
PosGIS/pgRoutingとRの連携による道路ネットワーク分析(埼玉大学・国府田様)
 
2015年度GPGPU実践プログラミング 第7回 総和計算
2015年度GPGPU実践プログラミング 第7回 総和計算2015年度GPGPU実践プログラミング 第7回 総和計算
2015年度GPGPU実践プログラミング 第7回 総和計算
 
「C言語規格&MISRA-C:みんなで楽しいCプログラミング」NGK2013B名古屋合同懇親会2013忘年会昼の部
「C言語規格&MISRA-C:みんなで楽しいCプログラミング」NGK2013B名古屋合同懇親会2013忘年会昼の部「C言語規格&MISRA-C:みんなで楽しいCプログラミング」NGK2013B名古屋合同懇親会2013忘年会昼の部
「C言語規格&MISRA-C:みんなで楽しいCプログラミング」NGK2013B名古屋合同懇親会2013忘年会昼の部
 
ソフトウェア志向の組込みシステム協調設計環境
ソフトウェア志向の組込みシステム協調設計環境ソフトウェア志向の組込みシステム協調設計環境
ソフトウェア志向の組込みシステム協調設計環境
 
DTrace for biginners part(2)
DTrace for biginners part(2)DTrace for biginners part(2)
DTrace for biginners part(2)
 
Digdagを用いた大規模広告配信ログデータの加工と運用
Digdagを用いた大規模広告配信ログデータの加工と運用Digdagを用いた大規模広告配信ログデータの加工と運用
Digdagを用いた大規模広告配信ログデータの加工と運用
 
Amazon EKSによるスケーラブルなCTR予測システム
Amazon EKSによるスケーラブルなCTR予測システムAmazon EKSによるスケーラブルなCTR予測システム
Amazon EKSによるスケーラブルなCTR予測システム
 
pg_bigmを用いた全文検索のしくみ(後編)
pg_bigmを用いた全文検索のしくみ(後編)pg_bigmを用いた全文検索のしくみ(後編)
pg_bigmを用いた全文検索のしくみ(後編)
 
IoT時代におけるストリームデータ処理と急成長の Apache Flink
IoT時代におけるストリームデータ処理と急成長の Apache FlinkIoT時代におけるストリームデータ処理と急成長の Apache Flink
IoT時代におけるストリームデータ処理と急成長の Apache Flink
 
画像処理の高性能計算
画像処理の高性能計算画像処理の高性能計算
画像処理の高性能計算
 
PL/CUDA - Fusion of HPC Grade Power with In-Database Analytics
PL/CUDA - Fusion of HPC Grade Power with In-Database AnalyticsPL/CUDA - Fusion of HPC Grade Power with In-Database Analytics
PL/CUDA - Fusion of HPC Grade Power with In-Database Analytics
 
gRPCurlDotNet.pptx
gRPCurlDotNet.pptxgRPCurlDotNet.pptx
gRPCurlDotNet.pptx
 
OpenTelemetryでWebシステムの処理を追跡しよう - DjangoCongress JP 2022
OpenTelemetryでWebシステムの処理を追跡しよう - DjangoCongress JP 2022OpenTelemetryでWebシステムの処理を追跡しよう - DjangoCongress JP 2022
OpenTelemetryでWebシステムの処理を追跡しよう - DjangoCongress JP 2022
 
KamonとDatadogによるリアクティブアプリケーションの監視の事例
KamonとDatadogによるリアクティブアプリケーションの監視の事例KamonとDatadogによるリアクティブアプリケーションの監視の事例
KamonとDatadogによるリアクティブアプリケーションの監視の事例
 
運用中のゲームにAIを導入するには〜プロジェクト推進・ユースケース・運用〜 [DeNA TechCon 2019]
運用中のゲームにAIを導入するには〜プロジェクト推進・ユースケース・運用〜 [DeNA TechCon 2019]運用中のゲームにAIを導入するには〜プロジェクト推進・ユースケース・運用〜 [DeNA TechCon 2019]
運用中のゲームにAIを導入するには〜プロジェクト推進・ユースケース・運用〜 [DeNA TechCon 2019]
 
Rを用いたGIS
Rを用いたGISRを用いたGIS
Rを用いたGIS
 

Mehr von 鉄平 土佐

GraphX Advent Calendar Day17
GraphX Advent Calendar Day17GraphX Advent Calendar Day17
GraphX Advent Calendar Day17鉄平 土佐
 
GraphX Advent Calendar Day15
GraphX Advent Calendar Day15GraphX Advent Calendar Day15
GraphX Advent Calendar Day15鉄平 土佐
 
GraphX Advent Calendar Day 14
GraphX Advent Calendar Day 14GraphX Advent Calendar Day 14
GraphX Advent Calendar Day 14鉄平 土佐
 
GraphX Advent Calendar Day 13
GraphX Advent Calendar Day 13GraphX Advent Calendar Day 13
GraphX Advent Calendar Day 13鉄平 土佐
 
GraphX Advent Calendar Day12 : Pregel概要
GraphX Advent Calendar Day12 : Pregel概要GraphX Advent Calendar Day12 : Pregel概要
GraphX Advent Calendar Day12 : Pregel概要鉄平 土佐
 
Asakusa fwはじめの一歩 0.7.0
Asakusa fwはじめの一歩 0.7.0Asakusa fwはじめの一歩 0.7.0
Asakusa fwはじめの一歩 0.7.0鉄平 土佐
 
Spark GraphXについて @Spark Meetup 2014/9/8
Spark GraphXについて @Spark Meetup 2014/9/8Spark GraphXについて @Spark Meetup 2014/9/8
Spark GraphXについて @Spark Meetup 2014/9/8鉄平 土佐
 
「Asakusa0.7の新機能で、テストデータをどうドキュメントするのか的な実用的なアレ」 by @okachimachiorz1
「Asakusa0.7の新機能で、テストデータをどうドキュメントするのか的な実用的なアレ」 by @okachimachiorz1「Asakusa0.7の新機能で、テストデータをどうドキュメントするのか的な実用的なアレ」 by @okachimachiorz1
「Asakusa0.7の新機能で、テストデータをどうドキュメントするのか的な実用的なアレ」 by @okachimachiorz1鉄平 土佐
 
GraphXはScalaエンジニアにとってのブルーオーシャン @ Scala Matsuri 2014
GraphXはScalaエンジニアにとってのブルーオーシャン @ Scala Matsuri 2014GraphXはScalaエンジニアにとってのブルーオーシャン @ Scala Matsuri 2014
GraphXはScalaエンジニアにとってのブルーオーシャン @ Scala Matsuri 2014鉄平 土佐
 
GraphX is the blue ocean for scala engineers @ Scala Matsuri 2014
GraphX is the blue ocean for scala engineers @ Scala Matsuri 2014GraphX is the blue ocean for scala engineers @ Scala Matsuri 2014
GraphX is the blue ocean for scala engineers @ Scala Matsuri 2014鉄平 土佐
 
Asakusa fw演算子チートシートについて
Asakusa fw演算子チートシートについてAsakusa fw演算子チートシートについて
Asakusa fw演算子チートシートについて鉄平 土佐
 
Asakusa fw勉強会2014真夏
Asakusa fw勉強会2014真夏Asakusa fw勉強会2014真夏
Asakusa fw勉強会2014真夏鉄平 土佐
 
Asakusa Framework 勉強会 2014 夏
Asakusa Framework 勉強会 2014 夏Asakusa Framework 勉強会 2014 夏
Asakusa Framework 勉強会 2014 夏鉄平 土佐
 
Asakusa Framework はじめの一歩 ( ver 0.6.2 )
Asakusa Framework はじめの一歩 ( ver 0.6.2 )Asakusa Framework はじめの一歩 ( ver 0.6.2 )
Asakusa Framework はじめの一歩 ( ver 0.6.2 )鉄平 土佐
 
Asakusa fwはじめの一歩・改
Asakusa fwはじめの一歩・改Asakusa fwはじめの一歩・改
Asakusa fwはじめの一歩・改鉄平 土佐
 
Asakusa fw勉強会2014冬
Asakusa fw勉強会2014冬Asakusa fw勉強会2014冬
Asakusa fw勉強会2014冬鉄平 土佐
 
Scala稟議の通し方(公開版)
Scala稟議の通し方(公開版)Scala稟議の通し方(公開版)
Scala稟議の通し方(公開版)鉄平 土佐
 

Mehr von 鉄平 土佐 (20)

GraphX Advent Calendar Day17
GraphX Advent Calendar Day17GraphX Advent Calendar Day17
GraphX Advent Calendar Day17
 
GraphX Advent Calendar Day15
GraphX Advent Calendar Day15GraphX Advent Calendar Day15
GraphX Advent Calendar Day15
 
GraphX Advent Calendar Day 14
GraphX Advent Calendar Day 14GraphX Advent Calendar Day 14
GraphX Advent Calendar Day 14
 
GraphX Advent Calendar Day 13
GraphX Advent Calendar Day 13GraphX Advent Calendar Day 13
GraphX Advent Calendar Day 13
 
GraphX Advent Calendar Day12 : Pregel概要
GraphX Advent Calendar Day12 : Pregel概要GraphX Advent Calendar Day12 : Pregel概要
GraphX Advent Calendar Day12 : Pregel概要
 
Asakusa fwはじめの一歩 0.7.0
Asakusa fwはじめの一歩 0.7.0Asakusa fwはじめの一歩 0.7.0
Asakusa fwはじめの一歩 0.7.0
 
Spark GraphXについて @Spark Meetup 2014/9/8
Spark GraphXについて @Spark Meetup 2014/9/8Spark GraphXについて @Spark Meetup 2014/9/8
Spark GraphXについて @Spark Meetup 2014/9/8
 
「Asakusa0.7の新機能で、テストデータをどうドキュメントするのか的な実用的なアレ」 by @okachimachiorz1
「Asakusa0.7の新機能で、テストデータをどうドキュメントするのか的な実用的なアレ」 by @okachimachiorz1「Asakusa0.7の新機能で、テストデータをどうドキュメントするのか的な実用的なアレ」 by @okachimachiorz1
「Asakusa0.7の新機能で、テストデータをどうドキュメントするのか的な実用的なアレ」 by @okachimachiorz1
 
GraphXはScalaエンジニアにとってのブルーオーシャン @ Scala Matsuri 2014
GraphXはScalaエンジニアにとってのブルーオーシャン @ Scala Matsuri 2014GraphXはScalaエンジニアにとってのブルーオーシャン @ Scala Matsuri 2014
GraphXはScalaエンジニアにとってのブルーオーシャン @ Scala Matsuri 2014
 
GraphX is the blue ocean for scala engineers @ Scala Matsuri 2014
GraphX is the blue ocean for scala engineers @ Scala Matsuri 2014GraphX is the blue ocean for scala engineers @ Scala Matsuri 2014
GraphX is the blue ocean for scala engineers @ Scala Matsuri 2014
 
Asakusa fw演算子チートシートについて
Asakusa fw演算子チートシートについてAsakusa fw演算子チートシートについて
Asakusa fw演算子チートシートについて
 
Asakusa fw勉強会2014真夏
Asakusa fw勉強会2014真夏Asakusa fw勉強会2014真夏
Asakusa fw勉強会2014真夏
 
Asakusa Framework 勉強会 2014 夏
Asakusa Framework 勉強会 2014 夏Asakusa Framework 勉強会 2014 夏
Asakusa Framework 勉強会 2014 夏
 
Asakusa Framework はじめの一歩 ( ver 0.6.2 )
Asakusa Framework はじめの一歩 ( ver 0.6.2 )Asakusa Framework はじめの一歩 ( ver 0.6.2 )
Asakusa Framework はじめの一歩 ( ver 0.6.2 )
 
Asakusa fwはじめの一歩・改
Asakusa fwはじめの一歩・改Asakusa fwはじめの一歩・改
Asakusa fwはじめの一歩・改
 
Asakusa fw勉強会2014冬
Asakusa fw勉強会2014冬Asakusa fw勉強会2014冬
Asakusa fw勉強会2014冬
 
Scala稟議の通し方(公開版)
Scala稟議の通し方(公開版)Scala稟議の通し方(公開版)
Scala稟議の通し方(公開版)
 
Scala active record
Scala active recordScala active record
Scala active record
 
はてブちう
はてブちうはてブちう
はてブちう
 
Moviecall
MoviecallMoviecall
Moviecall
 

GraphX によるグラフ分析処理の実例と入門