SlideShare a Scribd company logo
1 of 20
© 2016 IBM Corporation
Apache Spark入門
Tanaka Y.P
2016-08-26
© 2016 IBM Corporation2
自己紹介
田中裕一(yuichi tanaka)
主にアーキテクチャとサーバーサイドプログラムを担当
することが多い。Hadoop/Spark周りをよく触ります。
Node.js、Python、最近はSpark周りの仕事でScalaを書く
ことが多い気がします。
休日はOSS周りで遊んだり。
詳解 Apache Spark
© 2016 IBM Corporation3
アジェンダ
 Sparkの概要
 Sparkのテクノロジースタック
 SparkとHadoop
 Sparkコンポーネント
 Spark Core
 SparkSQL
 DataFrame
 SparkStreaming
 MLlib
 GraphX
 DataSets
 本日のサンプル(感情極性分析)
 Notebook
© 2016 IBM Corporation4
Sparkの概要
© 2016 IBM Corporation5
DataFrames
Sparkのテクノロジースタック
Spark Core
SparkSQL
Spark
Streaming
GraphX MLlib
HDFS Cassandra HBase ・・・
Packages
© 2016 IBM Corporation6
Apache SparkとHadoop
HadoopでのMapReduceの処理例
© 2016 IBM Corporation7
Apache Sparkの処理概要
SparkでのRDD&DAGの処理例
© 2016 IBM Corporation8
• Java, Scala, Pythonを利用してETLを実行可能
• RDD(Reslient Distributed Datasets)はScalaのコレクションの
Seqのようなもので、データを順番に保持
• RDDの内部はパーティションに分かれている。パーティション
毎にデータを保持(HDFSブロック数に依存)
• 分散処理する際にはパーティション毎に並列に処理
• mapやfilter等の基本的な操作の場合、データの順序は変わ
らない。
val csv = spark.textFile("tokyo.csv")
val pairs = csv.map(line => (line.split(",")))
.map(x => (x(0).take(8), (x(4).toFloat, 1)))
.reduceByKey( (x,y) => (x._1 + y._1, x._2 +
y._2) )
.map(x => (x._1, x._2._1/x._2._2) )
.sortByKey()
 Spark CoreはSparkのエンジン
Spark Core
20150614 22:00:00,0,1,8,20.9,8,3.0,8,南南西,8,85,8
20150614 23:00:00,0,1,8,20.9,8,2.6,8,南南西,8,86,8
20150615 00:00:00,0,1,8,20.5,8,1.0,8,南,8,86,8
20150615 1:00:00,0,1,8,20.4,8,0.7,8,南,8,88,8
(2015/6/14,22.565218)
(2015/6/15,24.550001)
(2015/6/16,23.358332)
(2015/6/17,21.583334)
例:平均気温の計算
© 2016 IBM Corporation9
• SQLを利用したデータ操作が可
能
• トランザクションなし
• Parquet 、Json、Hive だけで
なくJDBCやODBCもサポート
• Thrift JDBC/ODBCによる外部
からの接続
• 後述のDataFrameをラップする
形で実装
{"name":"貝嶋", "address":{"city":"川崎", "state":"神奈川"}}
{"name":"土屋", "address":{"city":"豊洲", "state":"東京"}}
{“name”:“山田", "address":{"city":"横浜", "state":"神奈川"}}
{"name":"岸代", "address":{"city":"後楽園", "state":"東京"}}
val people = sqlContext.jsonFile("test.json")
people.registerTempTable("people")
val nameAndAddress =
sqlContext.sql("SELECT name, address.city, address.state FROM
people WHERE address.state="神奈川"")
nameAndAddress.collect.foreach(println)
{"name":"貝嶋", "address":{"city":"川崎", "state":"神奈川"}}
{“name”:“山田", "address":{"city":"横浜", "state":"神奈川"}}
例:住所データ(json)からの特定データの抽出
• SparkSQLによるデータ操作
Spark SQL
© 2016 IBM Corporation10
DataFrame API
 Performance
 Less Code
© 2016 IBM Corporation11
DataFrame API
 Preformance
 Less Code
SQL Spark DataFrame API
Spark RDD
© 2016 IBM Corporation13
• Sparkによるミニ(マイクロ)バッチの実行
• DStreamと呼ばれるRDDを操作
• 指定間隔ごとにまとめられたRDDを処理(Windows処
理も可能)
• 通常のSparkプログラミングとほぼ同様
たとえば、定期的に流入するデータの「移動平均値」の連続計
算
val tstream = ssc.socketTextStream(hostname, port)
var mdtxt = tstream.map(x => x.split(","))
.map(x => ( x(0), (x(0), x(1), x(2).toInt) ) )
.updateStateByKey(updateFunc _)
mdtxt.print()
センサーデータ:
(Dev1, 201501010000, 0)
(Dev2, 201501010000, 0)
(Dev1, 201501010001, 1)
Alert: Dev1 Status changed : 1
 Sparkでストリーム処理
Spark Streaming
例:センサーデータの出力値変更時にアラート
DStream
RDD
data
data
RDD
data
data
RDD
data
data
© 2016 IBM Corporation14
• MLlibとRが利用可能
MLlibはScalaで、SparkRはRで
記述可能
• アルゴリズム(MLlib)
• SVM、ロジスティック回帰、決定木、K-
means、ALSなど
• IBMはSystemMLをSparkに提供
val data = spark.textFile("kdata.txt")
val parsedData = data.map(x =>
Vectors.dense(x.split(',').map(_.toDouble))).cache()
val numClusters = 3
val numIterations = 10
val clusters = KMeans.train(parsedData, numClusters, numIterations)
 Sparkで機械学習
SparkR, Mllib
データ: ( 直近購買月[n日前], 期間内購買回数 )
(5,1),(4,2),(5,3),(1,2),(2,4),(2,5),(2,6),(1,4),(1,5),(1,2),(1,5),(5,5)
クラスタ結果: ([中心], 人数)
([1.0, 2.0], 2), ([1.5, 4.833333333333333], 6),
([4.666666666666666, 2.0], 3), ([5.0, 5.0], 1)
例:顧客のクラスタ分け
0
2
4
6
0 2 4 6
© 2016 IBM Corporation15
• グラフデータを並列分散環境で処理するための
フレームワーク
• グラフ構造データを用いた解析を行う
• 「点」と「辺」からなるデータ
• SNSでのつながり、データ間の関連性
など
• 表構造では扱うことが難しい関係を見つけ出す
• データ間のつながりの抽出
• 輪の抽出
• 距離の計測
• 影響の計測
• グラフDBとの兼ね合い(これから)
val graphWithDistance = Pregel(
graph.mapVertices((id:VertexId, attr:Int) => List((id, 0))),
List[(VertexId, Int)](),
Int.MaxValue,EdgeDirection.Out)((id, attr, msg) =>
mergeVertexRoute(attr, msg.map(a=> (a._1, a._2 + 1))),edge
=> {
val isCyclic = edge.srcAttr.filter(_._1 ==
edge.dstId).nonEmpty
if(isCyclic) Iterator.empty
else Iterator((edge.dstId, edge.srcAttr))
},(m1, m2) => m1 ++ m2
)
 Sparkでグラフ処理を
Spark GraphX
つながりの検索
例: つながりと距離を見つけ出す
1,((1,0), (6,1), (9,1), (7,1), (4,2))
1
2 3
4
5
6
7
89
© 2016 IBM Corporation16
DataSet API
• Spark v1.6で追加された新しいAPI
• まだ実験的な実装であることに注意
• 登場背景
• RDDとDataFrameという二つの抽象概念ができてしまった。
• RDDとDataFrameにそれぞれ長所があること
• 2つの抽象概念を行き来する為のコストがかかる
• 二つの抽象概念をいいとこ取りしたDataSetAPIの登場
• DataFrameの速さはそのまま
• オブジェクト・メソッドはコンパイル時のタイプセーフ提供
• DataFrameとのシームレス変換
© 2016 IBM Corporation17
Structured Streaming
• Spark v2.0で追加される予定の新しいAPI
• Datasetの上に実装されたHigh-levelのStreamingAPI
• Streamingデータを構造化データとして
継続的に処理可能
val in =
spark.readStream .schema(schemaImp) .format("csv") .option("header",
true) .option("maxFilesPerTrigger", 1) .load("csv-logs")
Jacek Warszawa, Polska, 42,true
Jacek Warszawa, Polska, 42,true
-------------------------------------------
Batch: 0
-------------------------------------------
+-----+--------+-------+---+-----+
| name| city|country|age|alive|
+-----+--------+-------+---+-----+
|Jacek|Warszawa| Polska| 42| true|
+-----+--------+-------+---+-----+
complete output delta output
© 2016 IBM Corporation18
本日のサンプル(感情極性分析)
• Sparkを使った記事の感情極性分析を行います。(いわゆるネガポ
ジ)
• AdTechやSNS分析などで利用される分析
• その記事が肯定的な内容なのか否定的な内容なのかの判定に利用
否定的な内容の記事
広告が出る
© 2016 IBM Corporation19
本日のサンプル(感情極性分析)
• Sparkを使った記事の感情極性分析を行います。(いわゆるネガポ
ジ)
• 記事を読み込みword毎に区切る
• 単語極性対応表を使って記事の単語を評価
• 評価値を元にNegative / Pojitiveを数値で評価
記事
単語極性
対応表
単語分割
kuromoji
(ipadic)
辞書作成
マッチング 記事評価単語リスト
© 2016 IBM Corporation20
本日のサンプル(感情極性分析)
• 記事
• 記事タイトル,本文,メディアのCSV
• サンプル記事
• 飲酒運転、検挙数5分の1に減 「悪質」の割合は高まる
• 領海侵入の沈静化要求=岸田氏「首脳会談の前提」―日中外相会談
• 国交省、休日のダム見学、ツアーを実施することを発表 内部の一般開放も推進
• 過去最多メダル獲得 リオ五輪日本選手団の解団式
• 辞書
• 単語¥t極性値t用法
• サンプルデータ
• 貪欲 n 〜である・になる(評価・感情)主観
• 絆 p 〜がある・高まる(存在・性質)
• 腕前 e 〜がある・高まる(存在・性質)
• 腕利き p 〜である・になる(評価・感情)主観
© 2016 IBM Corporation21
参考
• 辞書
• 日本語評価極性辞書
• 東山昌彦, 乾健太郎, 松本裕治, 述語の選択選好性に着目した名詞評価極性の獲得, 言語処理学会第14
回年次大会論文集, pp.584-587, 2008. / Masahiko Higashiyama, Kentaro Inui, Yuji Matsumoto.
Learning Sentiment of Nouns from Selectional Preferences of Verbs and Adjectives, Proceedings of
the 14th Annual Meeting of the Association for Natural Language Processing, pp.584-587, 2008.

More Related Content

What's hot

Devsumi 2016 b_4 KafkaとSparkを組み合わせたリアルタイム分析基盤の構築
Devsumi 2016 b_4 KafkaとSparkを組み合わせたリアルタイム分析基盤の構築Devsumi 2016 b_4 KafkaとSparkを組み合わせたリアルタイム分析基盤の構築
Devsumi 2016 b_4 KafkaとSparkを組み合わせたリアルタイム分析基盤の構築Tanaka Yuichi
 
Pysparkで始めるデータ分析
Pysparkで始めるデータ分析Pysparkで始めるデータ分析
Pysparkで始めるデータ分析Tanaka Yuichi
 
Pythonで入門するApache Spark at PyCon2016
Pythonで入門するApache Spark at PyCon2016Pythonで入門するApache Spark at PyCon2016
Pythonで入門するApache Spark at PyCon2016Tatsuya Atsumi
 
HBaseとSparkでセンサーデータを有効活用 #hbasejp
HBaseとSparkでセンサーデータを有効活用 #hbasejpHBaseとSparkでセンサーデータを有効活用 #hbasejp
HBaseとSparkでセンサーデータを有効活用 #hbasejpFwardNetwork
 
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)NTT DATA OSS Professional Services
 
ビッグデータ活用を加速する!分散SQLエンジン Spark SQL のご紹介 20161105 OSC Tokyo Fall
ビッグデータ活用を加速する!分散SQLエンジン Spark SQL のご紹介 20161105 OSC Tokyo Fallビッグデータ活用を加速する!分散SQLエンジン Spark SQL のご紹介 20161105 OSC Tokyo Fall
ビッグデータ活用を加速する!分散SQLエンジン Spark SQL のご紹介 20161105 OSC Tokyo FallYusukeKuramata
 
Apache cassandraと apache sparkで作るデータ解析プラットフォーム
Apache cassandraと apache sparkで作るデータ解析プラットフォームApache cassandraと apache sparkで作るデータ解析プラットフォーム
Apache cassandraと apache sparkで作るデータ解析プラットフォームKazutaka Tomita
 
データ活用をもっともっと円滑に! ~データ処理・分析基盤編を少しだけ~
データ活用をもっともっと円滑に!~データ処理・分析基盤編を少しだけ~データ活用をもっともっと円滑に!~データ処理・分析基盤編を少しだけ~
データ活用をもっともっと円滑に! ~データ処理・分析基盤編を少しだけ~NTT DATA OSS Professional Services
 
Spark GraphX で始めるグラフ解析
Spark GraphX で始めるグラフ解析Spark GraphX で始めるグラフ解析
Spark GraphX で始めるグラフ解析Yosuke Mizutani
 
本当にあったApache Spark障害の話
本当にあったApache Spark障害の話本当にあったApache Spark障害の話
本当にあったApache Spark障害の話x1 ichi
 
データ分析に必要なスキルをつけるためのツール~Jupyter notebook、r連携、機械学習からsparkまで~
データ分析に必要なスキルをつけるためのツール~Jupyter notebook、r連携、機械学習からsparkまで~データ分析に必要なスキルをつけるためのツール~Jupyter notebook、r連携、機械学習からsparkまで~
データ分析に必要なスキルをつけるためのツール~Jupyter notebook、r連携、機械学習からsparkまで~The Japan DataScientist Society
 
15.05.21_ビッグデータ分析基盤Sparkの最新動向とその活用-Spark SUMMIT EAST 2015-
15.05.21_ビッグデータ分析基盤Sparkの最新動向とその活用-Spark SUMMIT EAST 2015-15.05.21_ビッグデータ分析基盤Sparkの最新動向とその活用-Spark SUMMIT EAST 2015-
15.05.21_ビッグデータ分析基盤Sparkの最新動向とその活用-Spark SUMMIT EAST 2015-LINE Corp.
 
Spark Summit 2015 参加報告
Spark Summit 2015 参加報告Spark Summit 2015 参加報告
Spark Summit 2015 参加報告Katsunori Kanda
 
SparkとCassandraの美味しい関係
SparkとCassandraの美味しい関係SparkとCassandraの美味しい関係
SparkとCassandraの美味しい関係datastaxjp
 
Spark Streamingを活用したシステムの検証結果と設計時のノウハウ
Spark Streamingを活用したシステムの検証結果と設計時のノウハウSpark Streamingを活用したシステムの検証結果と設計時のノウハウ
Spark Streamingを活用したシステムの検証結果と設計時のノウハウFuture Of Data Japan
 
SparkやBigQueryなどを用いた モバイルゲーム分析環境
SparkやBigQueryなどを用いたモバイルゲーム分析環境SparkやBigQueryなどを用いたモバイルゲーム分析環境
SparkやBigQueryなどを用いた モバイルゲーム分析環境yuichi_komatsu
 
QConTokyo2015「Sparkを用いたビッグデータ解析 〜後編〜」
QConTokyo2015「Sparkを用いたビッグデータ解析 〜後編〜」QConTokyo2015「Sparkを用いたビッグデータ解析 〜後編〜」
QConTokyo2015「Sparkを用いたビッグデータ解析 〜後編〜」Kazuki Taniguchi
 
Spark勉強会_ibm_20151014-公開版
Spark勉強会_ibm_20151014-公開版Spark勉強会_ibm_20151014-公開版
Spark勉強会_ibm_20151014-公開版Atsushi Tsuchiya
 

What's hot (20)

Devsumi 2016 b_4 KafkaとSparkを組み合わせたリアルタイム分析基盤の構築
Devsumi 2016 b_4 KafkaとSparkを組み合わせたリアルタイム分析基盤の構築Devsumi 2016 b_4 KafkaとSparkを組み合わせたリアルタイム分析基盤の構築
Devsumi 2016 b_4 KafkaとSparkを組み合わせたリアルタイム分析基盤の構築
 
Pysparkで始めるデータ分析
Pysparkで始めるデータ分析Pysparkで始めるデータ分析
Pysparkで始めるデータ分析
 
Pythonで入門するApache Spark at PyCon2016
Pythonで入門するApache Spark at PyCon2016Pythonで入門するApache Spark at PyCon2016
Pythonで入門するApache Spark at PyCon2016
 
HBaseとSparkでセンサーデータを有効活用 #hbasejp
HBaseとSparkでセンサーデータを有効活用 #hbasejpHBaseとSparkでセンサーデータを有効活用 #hbasejp
HBaseとSparkでセンサーデータを有効活用 #hbasejp
 
Jjug ccc
Jjug cccJjug ccc
Jjug ccc
 
Apache Sparkの紹介
Apache Sparkの紹介Apache Sparkの紹介
Apache Sparkの紹介
 
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
 
ビッグデータ活用を加速する!分散SQLエンジン Spark SQL のご紹介 20161105 OSC Tokyo Fall
ビッグデータ活用を加速する!分散SQLエンジン Spark SQL のご紹介 20161105 OSC Tokyo Fallビッグデータ活用を加速する!分散SQLエンジン Spark SQL のご紹介 20161105 OSC Tokyo Fall
ビッグデータ活用を加速する!分散SQLエンジン Spark SQL のご紹介 20161105 OSC Tokyo Fall
 
Apache cassandraと apache sparkで作るデータ解析プラットフォーム
Apache cassandraと apache sparkで作るデータ解析プラットフォームApache cassandraと apache sparkで作るデータ解析プラットフォーム
Apache cassandraと apache sparkで作るデータ解析プラットフォーム
 
データ活用をもっともっと円滑に! ~データ処理・分析基盤編を少しだけ~
データ活用をもっともっと円滑に!~データ処理・分析基盤編を少しだけ~データ活用をもっともっと円滑に!~データ処理・分析基盤編を少しだけ~
データ活用をもっともっと円滑に! ~データ処理・分析基盤編を少しだけ~
 
Spark GraphX で始めるグラフ解析
Spark GraphX で始めるグラフ解析Spark GraphX で始めるグラフ解析
Spark GraphX で始めるグラフ解析
 
本当にあったApache Spark障害の話
本当にあったApache Spark障害の話本当にあったApache Spark障害の話
本当にあったApache Spark障害の話
 
データ分析に必要なスキルをつけるためのツール~Jupyter notebook、r連携、機械学習からsparkまで~
データ分析に必要なスキルをつけるためのツール~Jupyter notebook、r連携、機械学習からsparkまで~データ分析に必要なスキルをつけるためのツール~Jupyter notebook、r連携、機械学習からsparkまで~
データ分析に必要なスキルをつけるためのツール~Jupyter notebook、r連携、機械学習からsparkまで~
 
15.05.21_ビッグデータ分析基盤Sparkの最新動向とその活用-Spark SUMMIT EAST 2015-
15.05.21_ビッグデータ分析基盤Sparkの最新動向とその活用-Spark SUMMIT EAST 2015-15.05.21_ビッグデータ分析基盤Sparkの最新動向とその活用-Spark SUMMIT EAST 2015-
15.05.21_ビッグデータ分析基盤Sparkの最新動向とその活用-Spark SUMMIT EAST 2015-
 
Spark Summit 2015 参加報告
Spark Summit 2015 参加報告Spark Summit 2015 参加報告
Spark Summit 2015 参加報告
 
SparkとCassandraの美味しい関係
SparkとCassandraの美味しい関係SparkとCassandraの美味しい関係
SparkとCassandraの美味しい関係
 
Spark Streamingを活用したシステムの検証結果と設計時のノウハウ
Spark Streamingを活用したシステムの検証結果と設計時のノウハウSpark Streamingを活用したシステムの検証結果と設計時のノウハウ
Spark Streamingを活用したシステムの検証結果と設計時のノウハウ
 
SparkやBigQueryなどを用いた モバイルゲーム分析環境
SparkやBigQueryなどを用いたモバイルゲーム分析環境SparkやBigQueryなどを用いたモバイルゲーム分析環境
SparkやBigQueryなどを用いた モバイルゲーム分析環境
 
QConTokyo2015「Sparkを用いたビッグデータ解析 〜後編〜」
QConTokyo2015「Sparkを用いたビッグデータ解析 〜後編〜」QConTokyo2015「Sparkを用いたビッグデータ解析 〜後編〜」
QConTokyo2015「Sparkを用いたビッグデータ解析 〜後編〜」
 
Spark勉強会_ibm_20151014-公開版
Spark勉強会_ibm_20151014-公開版Spark勉強会_ibm_20151014-公開版
Spark勉強会_ibm_20151014-公開版
 

Viewers also liked

ジャンク解析入門
ジャンク解析入門ジャンク解析入門
ジャンク解析入門Akira Kaneda
 
Akkaを使った スケーラブルなLINE BOT
Akkaを使ったスケーラブルなLINE BOT Akkaを使ったスケーラブルなLINE BOT
Akkaを使った スケーラブルなLINE BOT Takashi Sugimoto
 
「Python 機械学習プログラミング」 の挫折しない読み方
「Python 機械学習プログラミング」の挫折しない読み方「Python 機械学習プログラミング」の挫折しない読み方
「Python 機械学習プログラミング」 の挫折しない読み方Hiroki Yamamoto
 
アメーバブログを支えるデータセンターとインフラ技術
アメーバブログを支えるデータセンターとインフラ技術 アメーバブログを支えるデータセンターとインフラ技術
アメーバブログを支えるデータセンターとインフラ技術 Hiroki NAKASHIMA
 
マイクロブログを用いた英語圏ユーザの日本食に対する印象の分析
マイクロブログを用いた英語圏ユーザの日本食に対する印象の分析マイクロブログを用いた英語圏ユーザの日本食に対する印象の分析
マイクロブログを用いた英語圏ユーザの日本食に対する印象の分析恵佑 三富
 
[db tech showcase Tokyo 2016] D27: Next Generation Apache Cassandra by ヤフー株式会...
[db tech showcase Tokyo 2016] D27: Next Generation Apache Cassandra by ヤフー株式会...[db tech showcase Tokyo 2016] D27: Next Generation Apache Cassandra by ヤフー株式会...
[db tech showcase Tokyo 2016] D27: Next Generation Apache Cassandra by ヤフー株式会...Insight Technology, Inc.
 
Spark Streaming の基本とスケールする時系列データ処理 - Spark Meetup December 2015/12/09
Spark Streaming の基本とスケールする時系列データ処理 - Spark Meetup December 2015/12/09Spark Streaming の基本とスケールする時系列データ処理 - Spark Meetup December 2015/12/09
Spark Streaming の基本とスケールする時系列データ処理 - Spark Meetup December 2015/12/09MapR Technologies Japan
 
Prefer Cloud Platform - ビジョン、アーキテクチャ
Prefer Cloud Platform - ビジョン、アーキテクチャPrefer Cloud Platform - ビジョン、アーキテクチャ
Prefer Cloud Platform - ビジョン、アーキテクチャTomoharu ASAMI
 
Sparkストリーミング検証
Sparkストリーミング検証Sparkストリーミング検証
Sparkストリーミング検証BrainPad Inc.
 
5分でわかる静的解析入門
5分でわかる静的解析入門5分でわかる静的解析入門
5分でわかる静的解析入門Kenta USAMI
 
Spark Streaming と Spark GraphX を使用したTwitter解析による レコメンドサービス例
Spark Streaming と Spark GraphX を使用したTwitter解析による レコメンドサービス例Spark Streaming と Spark GraphX を使用したTwitter解析による レコメンドサービス例
Spark Streaming と Spark GraphX を使用したTwitter解析による レコメンドサービス例Junichi Noda
 
Sparkで始めるお手軽グラフデータ分析
Sparkで始めるお手軽グラフデータ分析Sparkで始めるお手軽グラフデータ分析
Sparkで始めるお手軽グラフデータ分析Nagato Kasaki
 
Scalaで学ぶ関数型言語超入門
Scalaで学ぶ関数型言語超入門Scalaで学ぶ関数型言語超入門
Scalaで学ぶ関数型言語超入門yujiro_t
 
線形?非線形?
線形?非線形?線形?非線形?
線形?非線形?nishio
 
DeNAのAIとは #denatechcon
DeNAのAIとは #denatechconDeNAのAIとは #denatechcon
DeNAのAIとは #denatechconDeNA
 
WebDB Forum 2016 gunosy
WebDB Forum 2016 gunosyWebDB Forum 2016 gunosy
WebDB Forum 2016 gunosyHiroaki Kudo
 
(旧版) オープンソースライセンスの基礎と実務
(旧版) オープンソースライセンスの基礎と実務(旧版) オープンソースライセンスの基礎と実務
(旧版) オープンソースライセンスの基礎と実務Yutaka Kachi
 

Viewers also liked (20)

ジャンク解析入門
ジャンク解析入門ジャンク解析入門
ジャンク解析入門
 
Akkaを使った スケーラブルなLINE BOT
Akkaを使ったスケーラブルなLINE BOT Akkaを使ったスケーラブルなLINE BOT
Akkaを使った スケーラブルなLINE BOT
 
「Python 機械学習プログラミング」 の挫折しない読み方
「Python 機械学習プログラミング」の挫折しない読み方「Python 機械学習プログラミング」の挫折しない読み方
「Python 機械学習プログラミング」 の挫折しない読み方
 
アメーバブログを支えるデータセンターとインフラ技術
アメーバブログを支えるデータセンターとインフラ技術 アメーバブログを支えるデータセンターとインフラ技術
アメーバブログを支えるデータセンターとインフラ技術
 
マイクロブログを用いた英語圏ユーザの日本食に対する印象の分析
マイクロブログを用いた英語圏ユーザの日本食に対する印象の分析マイクロブログを用いた英語圏ユーザの日本食に対する印象の分析
マイクロブログを用いた英語圏ユーザの日本食に対する印象の分析
 
[db tech showcase Tokyo 2016] D27: Next Generation Apache Cassandra by ヤフー株式会...
[db tech showcase Tokyo 2016] D27: Next Generation Apache Cassandra by ヤフー株式会...[db tech showcase Tokyo 2016] D27: Next Generation Apache Cassandra by ヤフー株式会...
[db tech showcase Tokyo 2016] D27: Next Generation Apache Cassandra by ヤフー株式会...
 
Spark Streaming の基本とスケールする時系列データ処理 - Spark Meetup December 2015/12/09
Spark Streaming の基本とスケールする時系列データ処理 - Spark Meetup December 2015/12/09Spark Streaming の基本とスケールする時系列データ処理 - Spark Meetup December 2015/12/09
Spark Streaming の基本とスケールする時系列データ処理 - Spark Meetup December 2015/12/09
 
Prefer Cloud Platform - ビジョン、アーキテクチャ
Prefer Cloud Platform - ビジョン、アーキテクチャPrefer Cloud Platform - ビジョン、アーキテクチャ
Prefer Cloud Platform - ビジョン、アーキテクチャ
 
Sparkストリーミング検証
Sparkストリーミング検証Sparkストリーミング検証
Sparkストリーミング検証
 
5分でわかる静的解析入門
5分でわかる静的解析入門5分でわかる静的解析入門
5分でわかる静的解析入門
 
Spark Streaming と Spark GraphX を使用したTwitter解析による レコメンドサービス例
Spark Streaming と Spark GraphX を使用したTwitter解析による レコメンドサービス例Spark Streaming と Spark GraphX を使用したTwitter解析による レコメンドサービス例
Spark Streaming と Spark GraphX を使用したTwitter解析による レコメンドサービス例
 
Sparkで始めるお手軽グラフデータ分析
Sparkで始めるお手軽グラフデータ分析Sparkで始めるお手軽グラフデータ分析
Sparkで始めるお手軽グラフデータ分析
 
Scalaで学ぶ関数型言語超入門
Scalaで学ぶ関数型言語超入門Scalaで学ぶ関数型言語超入門
Scalaで学ぶ関数型言語超入門
 
線形?非線形?
線形?非線形?線形?非線形?
線形?非線形?
 
DeNAのAIとは #denatechcon
DeNAのAIとは #denatechconDeNAのAIとは #denatechcon
DeNAのAIとは #denatechcon
 
Phantom Type in Scala
Phantom Type in ScalaPhantom Type in Scala
Phantom Type in Scala
 
WebDB Forum 2016 gunosy
WebDB Forum 2016 gunosyWebDB Forum 2016 gunosy
WebDB Forum 2016 gunosy
 
Spark MLlibではじめるスケーラブルな機械学習
Spark MLlibではじめるスケーラブルな機械学習Spark MLlibではじめるスケーラブルな機械学習
Spark MLlibではじめるスケーラブルな機械学習
 
(旧版) オープンソースライセンスの基礎と実務
(旧版) オープンソースライセンスの基礎と実務(旧版) オープンソースライセンスの基礎と実務
(旧版) オープンソースライセンスの基礎と実務
 
Apache Spark の紹介(前半:Sparkのキホン)
Apache Spark の紹介(前半:Sparkのキホン)Apache Spark の紹介(前半:Sparkのキホン)
Apache Spark の紹介(前半:Sparkのキホン)
 

Similar to Apache Sparkを使った感情極性分析

ゼロから始めるSparkSQL徹底活用!
ゼロから始めるSparkSQL徹底活用!ゼロから始めるSparkSQL徹底活用!
ゼロから始めるSparkSQL徹底活用!Nagato Kasaki
 
経済学のための実践的データ分析 4.SQL ことはじめ
経済学のための実践的データ分析 4.SQL ことはじめ経済学のための実践的データ分析 4.SQL ことはじめ
経済学のための実践的データ分析 4.SQL ことはじめYasushi Hara
 
Apache Spark+Zeppelinでアドホックなネットワーク解析
Apache Spark+Zeppelinでアドホックなネットワーク解析Apache Spark+Zeppelinでアドホックなネットワーク解析
Apache Spark+Zeppelinでアドホックなネットワーク解析npsg
 
Spark Summit 2014 の報告と最近の取り組みについて
Spark Summit 2014 の報告と最近の取り組みについてSpark Summit 2014 の報告と最近の取り組みについて
Spark Summit 2014 の報告と最近の取り組みについてRecruit Technologies
 
Deep Learning on Rescale - Oct/11/2016 at Rescale night
Deep Learning on Rescale - Oct/11/2016 at Rescale nightDeep Learning on Rescale - Oct/11/2016 at Rescale night
Deep Learning on Rescale - Oct/11/2016 at Rescale nightRescale Japan株式会社
 
Presto As A Service - Treasure DataでのPresto運用事例
Presto As A Service - Treasure DataでのPresto運用事例Presto As A Service - Treasure DataでのPresto運用事例
Presto As A Service - Treasure DataでのPresto運用事例Taro L. Saito
 
平成最後の1月ですし、Databricksでもやってみましょうか
平成最後の1月ですし、Databricksでもやってみましょうか平成最後の1月ですし、Databricksでもやってみましょうか
平成最後の1月ですし、DatabricksでもやってみましょうかRyuichi Tokugami
 
[コグラフ]spss modelerによるデータ加工入門
[コグラフ]spss modelerによるデータ加工入門[コグラフ]spss modelerによるデータ加工入門
[コグラフ]spss modelerによるデータ加工入門Co-graph Inc.
 
Apache Sparkの基本と最新バージョン3.2のアップデート(Open Source Conference 2021 Online/Fukuoka ...
Apache Sparkの基本と最新バージョン3.2のアップデート(Open Source Conference 2021 Online/Fukuoka ...Apache Sparkの基本と最新バージョン3.2のアップデート(Open Source Conference 2021 Online/Fukuoka ...
Apache Sparkの基本と最新バージョン3.2のアップデート(Open Source Conference 2021 Online/Fukuoka ...NTT DATA Technology & Innovation
 
Learning spaerk chapter03
Learning spaerk chapter03Learning spaerk chapter03
Learning spaerk chapter03Akimitsu Takagi
 
PGXのレスポンスとリソース消費
PGXのレスポンスとリソース消費PGXのレスポンスとリソース消費
PGXのレスポンスとリソース消費Tatsumi Akinori
 
大量のデータ処理や分析に使えるOSS Apache Spark入門(Open Source Conference 2021 Online/Kyoto 発表資料)
大量のデータ処理や分析に使えるOSS Apache Spark入門(Open Source Conference 2021 Online/Kyoto 発表資料)大量のデータ処理や分析に使えるOSS Apache Spark入門(Open Source Conference 2021 Online/Kyoto 発表資料)
大量のデータ処理や分析に使えるOSS Apache Spark入門(Open Source Conference 2021 Online/Kyoto 発表資料)NTT DATA Technology & Innovation
 
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜Takahiro Inoue
 
(LT)Spark and Cassandra
(LT)Spark and Cassandra(LT)Spark and Cassandra
(LT)Spark and Cassandradatastaxjp
 
[Oracle big data jam session #1] Apache Spark ことはじめ
[Oracle big data jam session #1] Apache Spark ことはじめ[Oracle big data jam session #1] Apache Spark ことはじめ
[Oracle big data jam session #1] Apache Spark ことはじめKenichi Sonoda
 
BigDLでScala × DeepLearning に入門した話
BigDLでScala × DeepLearning に入門した話BigDLでScala × DeepLearning に入門した話
BigDLでScala × DeepLearning に入門した話hirotakanosato
 
Deep Dive into Spark SQL with Advanced Performance Tuning
Deep Dive into Spark SQL with Advanced Performance TuningDeep Dive into Spark SQL with Advanced Performance Tuning
Deep Dive into Spark SQL with Advanced Performance TuningTakuya UESHIN
 
Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)
Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)
Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)NTT DATA OSS Professional Services
 

Similar to Apache Sparkを使った感情極性分析 (20)

ゼロから始めるSparkSQL徹底活用!
ゼロから始めるSparkSQL徹底活用!ゼロから始めるSparkSQL徹底活用!
ゼロから始めるSparkSQL徹底活用!
 
経済学のための実践的データ分析 4.SQL ことはじめ
経済学のための実践的データ分析 4.SQL ことはじめ経済学のための実践的データ分析 4.SQL ことはじめ
経済学のための実践的データ分析 4.SQL ことはじめ
 
Apache Spark+Zeppelinでアドホックなネットワーク解析
Apache Spark+Zeppelinでアドホックなネットワーク解析Apache Spark+Zeppelinでアドホックなネットワーク解析
Apache Spark+Zeppelinでアドホックなネットワーク解析
 
Apache spark 2.3 and beyond
Apache spark 2.3 and beyondApache spark 2.3 and beyond
Apache spark 2.3 and beyond
 
Spark Summit 2014 の報告と最近の取り組みについて
Spark Summit 2014 の報告と最近の取り組みについてSpark Summit 2014 の報告と最近の取り組みについて
Spark Summit 2014 の報告と最近の取り組みについて
 
Deep Learning on Rescale - Oct/11/2016 at Rescale night
Deep Learning on Rescale - Oct/11/2016 at Rescale nightDeep Learning on Rescale - Oct/11/2016 at Rescale night
Deep Learning on Rescale - Oct/11/2016 at Rescale night
 
Presto As A Service - Treasure DataでのPresto運用事例
Presto As A Service - Treasure DataでのPresto運用事例Presto As A Service - Treasure DataでのPresto運用事例
Presto As A Service - Treasure DataでのPresto運用事例
 
平成最後の1月ですし、Databricksでもやってみましょうか
平成最後の1月ですし、Databricksでもやってみましょうか平成最後の1月ですし、Databricksでもやってみましょうか
平成最後の1月ですし、Databricksでもやってみましょうか
 
[コグラフ]spss modelerによるデータ加工入門
[コグラフ]spss modelerによるデータ加工入門[コグラフ]spss modelerによるデータ加工入門
[コグラフ]spss modelerによるデータ加工入門
 
Survey of Apache Spark
Survey of Apache SparkSurvey of Apache Spark
Survey of Apache Spark
 
Apache Sparkの基本と最新バージョン3.2のアップデート(Open Source Conference 2021 Online/Fukuoka ...
Apache Sparkの基本と最新バージョン3.2のアップデート(Open Source Conference 2021 Online/Fukuoka ...Apache Sparkの基本と最新バージョン3.2のアップデート(Open Source Conference 2021 Online/Fukuoka ...
Apache Sparkの基本と最新バージョン3.2のアップデート(Open Source Conference 2021 Online/Fukuoka ...
 
Learning spaerk chapter03
Learning spaerk chapter03Learning spaerk chapter03
Learning spaerk chapter03
 
PGXのレスポンスとリソース消費
PGXのレスポンスとリソース消費PGXのレスポンスとリソース消費
PGXのレスポンスとリソース消費
 
大量のデータ処理や分析に使えるOSS Apache Spark入門(Open Source Conference 2021 Online/Kyoto 発表資料)
大量のデータ処理や分析に使えるOSS Apache Spark入門(Open Source Conference 2021 Online/Kyoto 発表資料)大量のデータ処理や分析に使えるOSS Apache Spark入門(Open Source Conference 2021 Online/Kyoto 発表資料)
大量のデータ処理や分析に使えるOSS Apache Spark入門(Open Source Conference 2021 Online/Kyoto 発表資料)
 
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
 
(LT)Spark and Cassandra
(LT)Spark and Cassandra(LT)Spark and Cassandra
(LT)Spark and Cassandra
 
[Oracle big data jam session #1] Apache Spark ことはじめ
[Oracle big data jam session #1] Apache Spark ことはじめ[Oracle big data jam session #1] Apache Spark ことはじめ
[Oracle big data jam session #1] Apache Spark ことはじめ
 
BigDLでScala × DeepLearning に入門した話
BigDLでScala × DeepLearning に入門した話BigDLでScala × DeepLearning に入門した話
BigDLでScala × DeepLearning に入門した話
 
Deep Dive into Spark SQL with Advanced Performance Tuning
Deep Dive into Spark SQL with Advanced Performance TuningDeep Dive into Spark SQL with Advanced Performance Tuning
Deep Dive into Spark SQL with Advanced Performance Tuning
 
Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)
Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)
Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)
 

Recently uploaded

論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 

Recently uploaded (8)

論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 

Apache Sparkを使った感情極性分析

  • 1. © 2016 IBM Corporation Apache Spark入門 Tanaka Y.P 2016-08-26
  • 2. © 2016 IBM Corporation2 自己紹介 田中裕一(yuichi tanaka) 主にアーキテクチャとサーバーサイドプログラムを担当 することが多い。Hadoop/Spark周りをよく触ります。 Node.js、Python、最近はSpark周りの仕事でScalaを書く ことが多い気がします。 休日はOSS周りで遊んだり。 詳解 Apache Spark
  • 3. © 2016 IBM Corporation3 アジェンダ  Sparkの概要  Sparkのテクノロジースタック  SparkとHadoop  Sparkコンポーネント  Spark Core  SparkSQL  DataFrame  SparkStreaming  MLlib  GraphX  DataSets  本日のサンプル(感情極性分析)  Notebook
  • 4. © 2016 IBM Corporation4 Sparkの概要
  • 5. © 2016 IBM Corporation5 DataFrames Sparkのテクノロジースタック Spark Core SparkSQL Spark Streaming GraphX MLlib HDFS Cassandra HBase ・・・ Packages
  • 6. © 2016 IBM Corporation6 Apache SparkとHadoop HadoopでのMapReduceの処理例
  • 7. © 2016 IBM Corporation7 Apache Sparkの処理概要 SparkでのRDD&DAGの処理例
  • 8. © 2016 IBM Corporation8 • Java, Scala, Pythonを利用してETLを実行可能 • RDD(Reslient Distributed Datasets)はScalaのコレクションの Seqのようなもので、データを順番に保持 • RDDの内部はパーティションに分かれている。パーティション 毎にデータを保持(HDFSブロック数に依存) • 分散処理する際にはパーティション毎に並列に処理 • mapやfilter等の基本的な操作の場合、データの順序は変わ らない。 val csv = spark.textFile("tokyo.csv") val pairs = csv.map(line => (line.split(","))) .map(x => (x(0).take(8), (x(4).toFloat, 1))) .reduceByKey( (x,y) => (x._1 + y._1, x._2 + y._2) ) .map(x => (x._1, x._2._1/x._2._2) ) .sortByKey()  Spark CoreはSparkのエンジン Spark Core 20150614 22:00:00,0,1,8,20.9,8,3.0,8,南南西,8,85,8 20150614 23:00:00,0,1,8,20.9,8,2.6,8,南南西,8,86,8 20150615 00:00:00,0,1,8,20.5,8,1.0,8,南,8,86,8 20150615 1:00:00,0,1,8,20.4,8,0.7,8,南,8,88,8 (2015/6/14,22.565218) (2015/6/15,24.550001) (2015/6/16,23.358332) (2015/6/17,21.583334) 例:平均気温の計算
  • 9. © 2016 IBM Corporation9 • SQLを利用したデータ操作が可 能 • トランザクションなし • Parquet 、Json、Hive だけで なくJDBCやODBCもサポート • Thrift JDBC/ODBCによる外部 からの接続 • 後述のDataFrameをラップする 形で実装 {"name":"貝嶋", "address":{"city":"川崎", "state":"神奈川"}} {"name":"土屋", "address":{"city":"豊洲", "state":"東京"}} {“name”:“山田", "address":{"city":"横浜", "state":"神奈川"}} {"name":"岸代", "address":{"city":"後楽園", "state":"東京"}} val people = sqlContext.jsonFile("test.json") people.registerTempTable("people") val nameAndAddress = sqlContext.sql("SELECT name, address.city, address.state FROM people WHERE address.state="神奈川"") nameAndAddress.collect.foreach(println) {"name":"貝嶋", "address":{"city":"川崎", "state":"神奈川"}} {“name”:“山田", "address":{"city":"横浜", "state":"神奈川"}} 例:住所データ(json)からの特定データの抽出 • SparkSQLによるデータ操作 Spark SQL
  • 10. © 2016 IBM Corporation10 DataFrame API  Performance  Less Code
  • 11. © 2016 IBM Corporation11 DataFrame API  Preformance  Less Code SQL Spark DataFrame API Spark RDD
  • 12. © 2016 IBM Corporation13 • Sparkによるミニ(マイクロ)バッチの実行 • DStreamと呼ばれるRDDを操作 • 指定間隔ごとにまとめられたRDDを処理(Windows処 理も可能) • 通常のSparkプログラミングとほぼ同様 たとえば、定期的に流入するデータの「移動平均値」の連続計 算 val tstream = ssc.socketTextStream(hostname, port) var mdtxt = tstream.map(x => x.split(",")) .map(x => ( x(0), (x(0), x(1), x(2).toInt) ) ) .updateStateByKey(updateFunc _) mdtxt.print() センサーデータ: (Dev1, 201501010000, 0) (Dev2, 201501010000, 0) (Dev1, 201501010001, 1) Alert: Dev1 Status changed : 1  Sparkでストリーム処理 Spark Streaming 例:センサーデータの出力値変更時にアラート DStream RDD data data RDD data data RDD data data
  • 13. © 2016 IBM Corporation14 • MLlibとRが利用可能 MLlibはScalaで、SparkRはRで 記述可能 • アルゴリズム(MLlib) • SVM、ロジスティック回帰、決定木、K- means、ALSなど • IBMはSystemMLをSparkに提供 val data = spark.textFile("kdata.txt") val parsedData = data.map(x => Vectors.dense(x.split(',').map(_.toDouble))).cache() val numClusters = 3 val numIterations = 10 val clusters = KMeans.train(parsedData, numClusters, numIterations)  Sparkで機械学習 SparkR, Mllib データ: ( 直近購買月[n日前], 期間内購買回数 ) (5,1),(4,2),(5,3),(1,2),(2,4),(2,5),(2,6),(1,4),(1,5),(1,2),(1,5),(5,5) クラスタ結果: ([中心], 人数) ([1.0, 2.0], 2), ([1.5, 4.833333333333333], 6), ([4.666666666666666, 2.0], 3), ([5.0, 5.0], 1) 例:顧客のクラスタ分け 0 2 4 6 0 2 4 6
  • 14. © 2016 IBM Corporation15 • グラフデータを並列分散環境で処理するための フレームワーク • グラフ構造データを用いた解析を行う • 「点」と「辺」からなるデータ • SNSでのつながり、データ間の関連性 など • 表構造では扱うことが難しい関係を見つけ出す • データ間のつながりの抽出 • 輪の抽出 • 距離の計測 • 影響の計測 • グラフDBとの兼ね合い(これから) val graphWithDistance = Pregel( graph.mapVertices((id:VertexId, attr:Int) => List((id, 0))), List[(VertexId, Int)](), Int.MaxValue,EdgeDirection.Out)((id, attr, msg) => mergeVertexRoute(attr, msg.map(a=> (a._1, a._2 + 1))),edge => { val isCyclic = edge.srcAttr.filter(_._1 == edge.dstId).nonEmpty if(isCyclic) Iterator.empty else Iterator((edge.dstId, edge.srcAttr)) },(m1, m2) => m1 ++ m2 )  Sparkでグラフ処理を Spark GraphX つながりの検索 例: つながりと距離を見つけ出す 1,((1,0), (6,1), (9,1), (7,1), (4,2)) 1 2 3 4 5 6 7 89
  • 15. © 2016 IBM Corporation16 DataSet API • Spark v1.6で追加された新しいAPI • まだ実験的な実装であることに注意 • 登場背景 • RDDとDataFrameという二つの抽象概念ができてしまった。 • RDDとDataFrameにそれぞれ長所があること • 2つの抽象概念を行き来する為のコストがかかる • 二つの抽象概念をいいとこ取りしたDataSetAPIの登場 • DataFrameの速さはそのまま • オブジェクト・メソッドはコンパイル時のタイプセーフ提供 • DataFrameとのシームレス変換
  • 16. © 2016 IBM Corporation17 Structured Streaming • Spark v2.0で追加される予定の新しいAPI • Datasetの上に実装されたHigh-levelのStreamingAPI • Streamingデータを構造化データとして 継続的に処理可能 val in = spark.readStream .schema(schemaImp) .format("csv") .option("header", true) .option("maxFilesPerTrigger", 1) .load("csv-logs") Jacek Warszawa, Polska, 42,true Jacek Warszawa, Polska, 42,true ------------------------------------------- Batch: 0 ------------------------------------------- +-----+--------+-------+---+-----+ | name| city|country|age|alive| +-----+--------+-------+---+-----+ |Jacek|Warszawa| Polska| 42| true| +-----+--------+-------+---+-----+ complete output delta output
  • 17. © 2016 IBM Corporation18 本日のサンプル(感情極性分析) • Sparkを使った記事の感情極性分析を行います。(いわゆるネガポ ジ) • AdTechやSNS分析などで利用される分析 • その記事が肯定的な内容なのか否定的な内容なのかの判定に利用 否定的な内容の記事 広告が出る
  • 18. © 2016 IBM Corporation19 本日のサンプル(感情極性分析) • Sparkを使った記事の感情極性分析を行います。(いわゆるネガポ ジ) • 記事を読み込みword毎に区切る • 単語極性対応表を使って記事の単語を評価 • 評価値を元にNegative / Pojitiveを数値で評価 記事 単語極性 対応表 単語分割 kuromoji (ipadic) 辞書作成 マッチング 記事評価単語リスト
  • 19. © 2016 IBM Corporation20 本日のサンプル(感情極性分析) • 記事 • 記事タイトル,本文,メディアのCSV • サンプル記事 • 飲酒運転、検挙数5分の1に減 「悪質」の割合は高まる • 領海侵入の沈静化要求=岸田氏「首脳会談の前提」―日中外相会談 • 国交省、休日のダム見学、ツアーを実施することを発表 内部の一般開放も推進 • 過去最多メダル獲得 リオ五輪日本選手団の解団式 • 辞書 • 単語¥t極性値t用法 • サンプルデータ • 貪欲 n 〜である・になる(評価・感情)主観 • 絆 p 〜がある・高まる(存在・性質) • 腕前 e 〜がある・高まる(存在・性質) • 腕利き p 〜である・になる(評価・感情)主観
  • 20. © 2016 IBM Corporation21 参考 • 辞書 • 日本語評価極性辞書 • 東山昌彦, 乾健太郎, 松本裕治, 述語の選択選好性に着目した名詞評価極性の獲得, 言語処理学会第14 回年次大会論文集, pp.584-587, 2008. / Masahiko Higashiyama, Kentaro Inui, Yuji Matsumoto. Learning Sentiment of Nouns from Selectional Preferences of Verbs and Adjectives, Proceedings of the 14th Annual Meeting of the Association for Natural Language Processing, pp.584-587, 2008.

Editor's Notes

  1. 1
  2. 会社ではSparkとHadoopのスペシャリストやってます。
  3. Apache Sparkの概要を簡単におさらいします。 SparkはSparkCoreモジュールとそれを利用したSparkSQL,GraphX,Streaming,Mllibからなります。 SparkCore:RDDを始めとる、メモリ管理やタスクスケジューリングなどの機能を提供するコンポーネント SparkSQL:構造化データを操作するため、SQLのインタフェースを提供するコンポーネント GraphX:グラフ演算処理を行い、グラフ操作するための機能を提供するコンポーネント Spark Streaming:ストリーミングデータの処理を提供するコンポーネント、RDDの拡張であるDStreamを用いてRDDと似た操作が可能 MLlib: 分類、推薦、クラスタリングなどの機械学習アルゴリズムを提供するコンポーネント
  4. MapReduceと比較してオンメモリでの分散処理に特化しています。 まずはMapReduceを用いてデータ処理を行った場合の処理例です。 MapReduceがスループットを重視し、バッチ処理に特化しているのに対して、 Sparkはレイテンシを重視し、インタラクティブにデータ分析が可能となっています。
  5. 次にSparkのRDD&DAGの場合の処理例です。 後ほど出てきますが、SparkはSparkSQLを使うことでRDBの直接参照が可能です。 MapReduceがスループットを重視し、バッチ処理に特化しているのに対して、 Sparkはレイテンシを重視し、メモリ上で操作を行うことで、インタラクティブにデータ分析が可能となっています。
  6. そこでRDBMSと同様なSQLを用いてRDDの操作を行うのがSparkSQLです。
  7. DataFrameAPIを使うメリットとしては2つ Performance(catalystオプティマイザによる処理の最適化) Less Code(より簡素なコード)
  8. Catalystの主な役割は論理最適化と物理実行計画の最適化を行う Analysis:DataFrameの分析 Logical Optimization: 主に処理順序の最適化 Physical Planning: 幾つかの計画を実行コストで比較し、コストの低いものを選択 Code Generation: RDDの処理を生成
  9. RDDとDataFrameの相互変換は可能 RDDはJVMオブジェクトである為コンパイル時のタイプセーフ(DataFrameはタイプセーフにならない) RDDで書くほうが処理ロジックは容易 基本的に速い対してDataFrameは メモリアカウンティングをやってくれる などそれぞれメリットがある