SlideShare a Scribd company logo
1 of 19
Download to read offline
Copyright © 2019,Oracle and/orits affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted
Copyright © 2019,Oracle and/orits affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted
Apache Sparkことはじめ
園田憲一
日本オラクル株式会社
サンプル・コードから学ぶApache Spark
Oracle Code Night
Oracle Big Data Jam Session #1
Copyright © 2019,Oracle and/orits affiliates. All rights reserved. |
• カリフォルニア大学バークレー校
AMPLabで開発スタート
• 2014年Apache Software Foundation
から初回リリース
• 短期間で圧倒的な人気を獲得した
オープンソースソフトウェア
• 高性能かつ生産性の高いライブラリ
群
• 豊富なエコシステム
• 開発言語
– Scala, Java, Python, R, SQL
Confidential – Oracle Internal/Restricted/Highly Restricted 3
Apache Spark
Copyright © 2019,Oracle and/orits affiliates. All rights reserved. |
• Spark Core
– Resilient Distribute Dataset(Sparkの内部的な
基本データ構造)を構成
– 基本的なデータ操作
• Spark SQL
– SQLによるデータ操作
– その他のライブラリと併用可
• Spark Streaming
– リアルタイム処理用のライブラリ
• Spark ML
– 機械学習用、統計処理用ライブラリ
• Spark Graph
– グラフ処理用ライブラリ
Confidential – Oracle Internal/Restricted/Highly Restricted 4
Apache Sparkのライブラリ
http://spark.apache.org/
Copyright © 2019,Oracle and/orits affiliates. All rights reserved. |
• SQLでデータ処理を行うためのライブ
ラリ
• 非構造化データにスキーマ(列、行、
データ型)を定義
• データ処理
– 集計処理、ソート処理、結合処理など
• その他のライブラリ(ML、Streaming、
Graph)でも利用可能
• 対応ファイルフォーマット
– CSV, XML, JSON
– Avro, Parquet, ORC
Confidential – Oracle Internal/Restricted/Highly Restricted 5
Spark SQL
// 表の作成
0: jdbc:hive2://localhost:10015> create table movies(actor
string, title string, year int) row format delimited fields
terminated by ',' lines terminated by '¥n’;
// csvファイルからのデータロード
0: jdbc:hive2://localhost:10015> load data local inpath
'/home/opc/data/movies.csv' into table movies;
// 全件検索の実行
0: jdbc:hive2://localhost:10015> select * from movies;
+-----------------+---------------+-------+
| actor| title| year|
+-----------------+---------------+-------+
|McClure, Marc (I)| Freaky Friday| 2003|
|McClure, Marc (I)| Coach Carter| 2005|
|McClure, Marc (I)| Superman II| 1980|
|McClure, Marc (I)| Apollo 13| 1995|
Copyright © 2019,Oracle and/orits affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 6
Spark ML
• 機械学習のライブラリ
• 様々な統計アルゴリズムをサポート
カテゴリ 統計アルゴリズム
分類回帰
SVM(Support Vector Machine), Logistic
Regression, Linear Regression, Naive
Bayes, Decision Trees, Ensembles of
Trees(Random Forests, Gradient boosted
Trees), Isotonic Regression
協調フィルタリング ALS(Alternating Least Squares)
クラスタリング
K-means, Gaussian mixture, PIC(Power
Iteration Clustering), Latent Dirichlet
Allocation(LAD), Streaming k-means
次元削減
SVD(Singular Value Decomposition),
PCA(Principal Component Analysis)
特徴抽出、変換
TF-IDF, Workd2Vec, StnadardScalar,
Normalizer, Feature selection,
ElementwiseProduct, PCA
頻出パターン
マイニング
FP-Growth, Association Rues, RefixSpan
学習
データ
学習プ
ログラ
ム
予測
モデル
予測
データ
予測
結果
入力 出力
機械学習のワークフロー
学習フェーズ
予測フェーズ
Copyright © 2019,Oracle and/orits affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 7
Spark ML サンプルコード①概要
学習
データ
正解
ラベル
学習データの準備
学習器
特徴
抽出
パイプライン
学習 予測モデル
正解
ラベル
予測結果
未知の
データ
予測データの準備学習フェーズ
予
測
フ
ェ
ー
ズ
+----------------+-----+
| text|label|
+----------------+-----+
| spark i j k| ? |
| l m n| ? |
| mapreduce spark| ? |
| apache hadoop| ? |
+----------------+-----+
+----------------+-----+
| text|label|
+----------------+-----+
| a b c d e spark| 1.0|
| b d| 0.0|
| spark f g h| 1.0|
|hadoop mapreduce| 0.0|
| b spark who| 1.0|
| g d a y| 0.0|
| spark fly| 1.0|
| was mapreduce| 0.0|
| e spark program| 1.0|
| a e c l| 0.0|
| spark compile | 1.0|
|hadoop software | 0.0|
+----------------+-----+
入力 出力
サンプルコードの概要
正解ラベル付きの学習データから特徴を学習し、未知のデー
タの正解ラベルを予測する。
• 学習データ:テキストデータ(正解ラベル付き)
• 学習プログラム:テキストデータを単語に区切り、特徴抽出
• 予測モデル:「spark」という文字列が入っているかいないか
Copyright © 2019,Oracle and/orits affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 8
Spark ML サンプルコード②データの準備
学習
データ
正解
ラベル
学習データの準備
学習器
特徴
抽出
パイプライン
学習 予測モデル
正解
ラベル
予測結果
未知の
データ
予測データの準備学習フェーズ
予
測
フ
ェ
ー
ズ
training = spark.createDataFrame([
(0, "a b c d e spark", 1.0),
(1, "b d", 0.0),
(2, "spark f g h", 1.0),
(3, "hadoop mapreduce", 0.0),
(4, "b spark who", 1.0),
(5, "g d a y", 0.0),
(6, "spark fly", 1.0),
(7, "was mapreduce", 0.0),
(8, "e spark program", 1.0),
(9, "a e c l", 0.0),
(10, "spark compile", 1.0),
(11, "hadoop software", 0.0)
], ["id", "text", "label"])
入力 出力
Copyright © 2019,Oracle and/orits affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 9
Spark ML サンプルコード③学習、予測モデルの作成
学習
データ
正解
ラベル
学習データの準備
学習器
特徴
抽出
パイプライン
学習 予測モデル
正解
ラベル
予測結果
未知の
データ
予測データの準備学習フェーズ
予
測
フ
ェ
ー
ズ
// 特徴抽出の定義
tokenizer = Tokenizer(inputCol='text', outputCol='words')
hashingTF = HashingTF(inputCol=tokenizer.getOutputCol(),
outputCol='features')
// 学習器としてロジスティック回帰を指定
lr = LogisticRegression(maxIter=10)
// 特徴抽出と学習器をPipelineとして登録
pipeline = Pipeline(stages=[tokenizer, hashingTF, lr])
//学習を実行し、予測モデルを生成
model = pipeline.fit(training)
入力 出力
Copyright © 2019,Oracle and/orits affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 10
Spark ML サンプルコード④予測データの準備と予測実行
学習
データ
正解
ラベル
学習データの準備
学習器
特徴
抽出
パイプライン
学習 予測モデル
正解
ラベル
予測結果
未知の
データ
予測データの準備学習フェーズ
予
測
フ
ェ
ー
ズ
// 予測データの準備
test = spark.createDataFrame([
(4, "spark i j k"),
(5, "l m n"),
(6, "mapreduce spark"),
(7, "apache hadoop")
], ["id", "text"])
入力 出力
// 予測の実行、結果の確認
predict = model.transform(test)
predict.select('id', 'text','prediction').show(truncate=False)
+---+---------------+----------+
|id |text |prediction|
+---+---------------+----------+
|4 |spark i j k |1.0 |
|5 |l m n |0.0 |
|6 |mapreduce spark|1.0 |
|7 |apache hadoop |0.0 |
+---+---------------+----------+
Copyright © 2019,Oracle and/orits affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 11
Spark Streaming
• ストリーミングデータに対するリアルタイム処理のためのライブラリ
• 絶え間なく発生するデータを次々と処理して次々と結果を返し、その
結果をもとにアクションを実行
連
携
シ
ス
テ
ム
結果データ 処理
結果データ 処理
結果データ 処理
デ
ー
タ
ソ
ー
ス
時刻 T
のデータ
時刻 T + 1
のデータ
時刻 T + 2
のデータ
ストリーム
ストリーム
ストリーム
連携
連携
連携
アクション
アクション
アクション
時間軸
Spark クラスタ
Copyright © 2019,Oracle and/orits affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 12
Spark Streaming サンプル・コード概要
$ nc –lk 9999
hello world(⏎キー)
test test(⏎キー)
hoge hoge(⏎キー)
-------------------------------------------
Time: 1357008430000 ms
-------------------------------------------
(hello,1)
(world,1)
-------------------------------------------
Time: 1482008230000 ms
-------------------------------------------
(test,2)
-------------------------------------------
Time: 1322001210000 ms
-------------------------------------------
(hoge,2)
ターミナル1 : ストリームデータの生成
ターミナル2 : 結果の出力
Hello, 1
World, 1
Hello
world
ワード
カウント
処理
デ
ー
タ
ソ
ー
ス
ストリーム
ストリーム
ストリーム
test, 2
test test
ワード
カウント
処理
hoge, 2
hoge hoge
ワード
カウント
処理
サンプルコードの概要
ターミナルから随時入力されるテキストデータに対してワードカ
ウント処理を行い、単語の出現数を返す
• ストリームデータ:随時入力されるテキストデータ
• ストリーム処理:ワードカウント(一秒間隔で繰り返す)
Copyright © 2019,Oracle and/orits affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 13
Spark Streaming サンプル・コード
// 入力ストリームデータの定義(1秒間隔でバッチ処理を繰り返す)
val ssc = new StreamingContext(sc, Seconds(1))
//入力データソースの定義(9999番ポートでオープンしたTCPソケッ
トにローカルホストから接続)
val lines = ssc.socketTextStream("localhost", 9999)
//ストリームデータのテキストをスペース区切りで分割
val words = lines.flatMap(_.split(" "))
//単語をカウントし、単語と出現数を標準出力に出力
val pairs = words.map(word => (word, 1))
val wordCounts = pairs.reduceByKey(_ + _)
wordCounts.print()
// 定義したストリーム処理の開始
ssc.start()
Hello, 1
World, 1
Hello
world
ワード
カウント
処理
デ
ー
タ
ソ
ー
ス
ストリーム
ストリーム
ストリーム
test, 2
test test
ワード
カウント
処理
hoge, 2
hoge hoge
ワード
カウント
処理
サンプルコードの概要
ターミナルから随時入力されるテキストデータに対してワードカ
ウント処理を行い、単語の出現数を返す
• ストリームデータ:随時入力されるテキストデータ
• ストリーム処理:ワードカウント(一秒間隔で繰り返す)
Copyright © 2019,Oracle and/orits affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 14
Spark Streaming サンプル・コード
$ nc –lk 9999
hello world(⏎キー)
test test(⏎キー)
hoge hoge(⏎キー)
-------------------------------------------
Time: 1357008430000 ms
-------------------------------------------
(hello,1)
(world,1)
-------------------------------------------
Time: 1482008230000 ms
-------------------------------------------
(test,2)
-------------------------------------------
Time: 1322001210000 ms
-------------------------------------------
(hoge,2)
ターミナル1 : ストリームデータの生成
ターミナル2 : 結果の出力
Hello, 1
World, 1
Hello
world
ワード
カウント
処理
デ
ー
タ
ソ
ー
ス
ストリーム
ストリーム
ストリーム
test, 2
test test
ワード
カウント
処理
hoge, 2
hoge hoge
ワード
カウント
処理
サンプルコードの概要
ターミナルから随時入力されるテキストデータに対してワードカ
ウント処理を行い、単語の出現数を返す
• ストリームデータ:随時入力されるテキストデータ
• ストリーム処理:ワードカウント(一秒間隔で繰り返す)
Copyright © 2019,Oracle and/orits affiliates. All rights reserved. |
• 世の中のあらゆる“関係性”を定義し、分
析するライブラリ
• グラフのデータモデル
– 「頂点(Vertex) 」」と「辺(Edge) 」からなるデータ
構造
– 頂点に「モノ」、辺に「頂点同志の関係」を定義
する
– 「頂点」と「辺 」に属性や情報を定義する
• データ処理の例
– 任意の頂点までの経路を表示
– 任意の関係の頂点を全てリスト
– 任意の頂点に繋がっている頂点の数のカウン
ト
– ページランク
Confidential – Oracle Internal/Restricted/Highly Restricted 15
Spark Graph
頂点(Vertex)
辺(Edge)
グラフデータモデル
ユーザーA
(田中, 46歳)
ユーザーB
(鈴木, 20歳)
ユーザーC
(山田, 18歳)
ユーザーD
(林, 35歳)
ユーザーE
(井上, 60歳)
follow follow
follow
follow
follow
商品A
(本, 1980円)
商品B
(鉛筆, 100円)
ユーザーA
(山田, 18歳)
ユーザーB
(小山, 25歳)
購入済
商品C
(ノート, 200円)
購入済購入済
SNSの例 ショッピングサイトの例
Copyright © 2019,Oracle and/orits affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 16
Spark Graph サンプル・コード①概要とデータモデルの定義
ユーザーa
(Alice, 34)
ユーザーd
(Deck, 52)
ユーザーb
(Bob, 36) ユーザーc
(Charlie, 30)
ユーザーe
(Evan, 20)
ユーザーf
(Farr, 52)
friend
friend
family
family
Colleague
friend
Colleague
// 頂点(各ユーザー)の定義
>>> v = sqlContext.createDataFrame([
... ("a", "Alice", 34),
... ("b", "Bob", 36),
... ("c", "Charlie", 30),
... ("d", "Deck", 52),
... ("e", "Evan", 20),
... ("f", "Farr", 18),
... ], ["id", "name", "age"])
// 辺(各ユーザーの関係)を定義
>>> e = sqlContext.createDataFrame([
... ("a", "b", "family"),
... ("a", "c", "friend"),
-----------中略--------------------
... ("e", "a", "Colleague"),
... ("e", "c", "friend"),
... ("f", "c", "friend"),
... ], ["src", "dst", "relationship"])
// 頂点と辺をグラフデータモデルとして定義
>>> g = GraphFrame(v, e)
登録されているユーザーの中から友人関係のユー
ザーのみを検索する
• 頂点(Vertex) : 登録ユーザー
• 辺(Edge) : 登録ユーザーの関係
Copyright © 2019,Oracle and/orits affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 17
Spark Graph サンプル・コード②クエリを実行
// 友達の関係にあるユーザーを検索する
>>> g.edges.filter("relationship = 'friend'").show()
+---+---+------------+
|src|dst|relationship|
+---+---+------------+
| a| c| friend|
| c| a| friend|
| c| f| friend|
| c| e| friend|
| e| c| friend|
| f| c| friend|
+---+---+------------+
ユーザーa
(Alice, 34)
ユーザーd
(Deck, 52)
ユーザーb
(Bob, 36) ユーザーc
(Charlie, 30)
ユーザーe
(Evan, 20)
ユーザーf
(Farr, 52)
friend
friend
family
family
Colleague
friend
Colleague
ユーザーa
(Alice, 34)
ユーザーd
(Deck, 52)
ユーザーb
(Bob, 36) ユーザーc
(Charlie, 30)
ユーザーe
(Evan, 20)
ユーザーf
(Farr, 52)
friend
friend
family
family
Colleague
friend
Colleague
登録されているユーザーの中から友人関係のユー
ザーのみを検索する
• 頂点(Vertex) : 登録ユーザー
• 辺(Edge) : 登録ユーザーの関係
Copyright © 2019,Oracle and/orits affiliates. All rights reserved. |
• OCI Big Data Service
– Clouderaのサーバレス・サービス
– クラスタの作成、管理を容易に
– Cloudera Managerなどこれまでの使い勝手は
そのままで
• OCI Data Flow Service
– Apache Sparkのサーバレス・サービス
– Sparkクラスタの構築、管理が不要
– 3ステップでSpark処理が完了
• データとプログラムのアップロード
• プログラムをアプリケーションとして登録
• アプリケーションの実行
Confidential – Oracle Internal/Restricted/Highly Restricted 18
Spark関連のOCIサーバーレスサービス
Copyright © 2019,Oracle and/orits affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 19

More Related Content

What's hot

Oracle jdk 20190827 - 今、あらためてOracle提供のJDKを語る
Oracle jdk 20190827 - 今、あらためてOracle提供のJDKを語るOracle jdk 20190827 - 今、あらためてOracle提供のJDKを語る
Oracle jdk 20190827 - 今、あらためてOracle提供のJDKを語るオラクルエンジニア通信
 
しばちょう先生が語る!オラクルデータベースの進化の歴史と最新技術動向#1
しばちょう先生が語る!オラクルデータベースの進化の歴史と最新技術動向#1しばちょう先生が語る!オラクルデータベースの進化の歴史と最新技術動向#1
しばちょう先生が語る!オラクルデータベースの進化の歴史と最新技術動向#1オラクルエンジニア通信
 
[Modern Cloud Day Tokyo 2019] Oracle Functions = サーバーレス × Dockerコンテナ:AWS Lamb...
[Modern Cloud Day Tokyo 2019] Oracle Functions = サーバーレス × Dockerコンテナ:AWS Lamb...[Modern Cloud Day Tokyo 2019] Oracle Functions = サーバーレス × Dockerコンテナ:AWS Lamb...
[Modern Cloud Day Tokyo 2019] Oracle Functions = サーバーレス × Dockerコンテナ:AWS Lamb...オラクルエンジニア通信
 
Oracle APEX 20.1新機能紹介
Oracle APEX 20.1新機能紹介Oracle APEX 20.1新機能紹介
Oracle APEX 20.1新機能紹介Nakakoshi Yuji
 
OCHaCafe Season 2 #4 - Cloud Native時代のモダンJavaの世界
OCHaCafe Season 2 #4 - Cloud Native時代のモダンJavaの世界OCHaCafe Season 2 #4 - Cloud Native時代のモダンJavaの世界
OCHaCafe Season 2 #4 - Cloud Native時代のモダンJavaの世界オラクルエンジニア通信
 
【より深く知ろう】活用最先端!データベースとアプリケーション開発をシンプルに、高速化するテクニック
【より深く知ろう】活用最先端!データベースとアプリケーション開発をシンプルに、高速化するテクニック【より深く知ろう】活用最先端!データベースとアプリケーション開発をシンプルに、高速化するテクニック
【より深く知ろう】活用最先端!データベースとアプリケーション開発をシンプルに、高速化するテクニックオラクルエンジニア通信
 
企業システムで使えるマイクロサービスの特長と実践 (Oracle Cloudウェビナーシリーズ: 2021年4月15日)
企業システムで使えるマイクロサービスの特長と実践 (Oracle Cloudウェビナーシリーズ: 2021年4月15日)企業システムで使えるマイクロサービスの特長と実践 (Oracle Cloudウェビナーシリーズ: 2021年4月15日)
企業システムで使えるマイクロサービスの特長と実践 (Oracle Cloudウェビナーシリーズ: 2021年4月15日)オラクルエンジニア通信
 
Oracle Database / Exadata Cloud 技術情報(Oracle Cloudウェビナーシリーズ: 2020年7月9日)
Oracle Database / Exadata Cloud 技術情報(Oracle Cloudウェビナーシリーズ: 2020年7月9日)Oracle Database / Exadata Cloud 技術情報(Oracle Cloudウェビナーシリーズ: 2020年7月9日)
Oracle Database / Exadata Cloud 技術情報(Oracle Cloudウェビナーシリーズ: 2020年7月9日)オラクルエンジニア通信
 
しばちょう先生が語る!オラクルデータベースの進化の歴史と最新技術動向#3
しばちょう先生が語る!オラクルデータベースの進化の歴史と最新技術動向#3しばちょう先生が語る!オラクルデータベースの進化の歴史と最新技術動向#3
しばちょう先生が語る!オラクルデータベースの進化の歴史と最新技術動向#3オラクルエンジニア通信
 
20190620 multicloud share
20190620 multicloud share20190620 multicloud share
20190620 multicloud shareMai Nagahisa
 
20151209 Oracle DDD オラクルで実現するクラウド・マシン・ラーニング
20151209 Oracle DDD オラクルで実現するクラウド・マシン・ラーニング20151209 Oracle DDD オラクルで実現するクラウド・マシン・ラーニング
20151209 Oracle DDD オラクルで実現するクラウド・マシン・ラーニングオラクルエンジニア通信
 
ochacafe#6 人にもマシンにもやさしいAPIのエコシステム
ochacafe#6 人にもマシンにもやさしいAPIのエコシステムochacafe#6 人にもマシンにもやさしいAPIのエコシステム
ochacafe#6 人にもマシンにもやさしいAPIのエコシステムオラクルエンジニア通信
 
GoldenGateテクニカルセミナー3「Oracle GoldenGate Technical Deep Dive」(2016/5/11)
GoldenGateテクニカルセミナー3「Oracle GoldenGate Technical Deep Dive」(2016/5/11)GoldenGateテクニカルセミナー3「Oracle GoldenGate Technical Deep Dive」(2016/5/11)
GoldenGateテクニカルセミナー3「Oracle GoldenGate Technical Deep Dive」(2016/5/11)オラクルエンジニア通信
 
今年はJava進化の年!今知っておくべき新しいJava
今年はJava進化の年!今知っておくべき新しいJava今年はJava進化の年!今知っておくべき新しいJava
今年はJava進化の年!今知っておくべき新しいJavaTakashi Ito
 

What's hot (20)

20200527 oracle cloud infrastructure data science
20200527 oracle cloud infrastructure data science20200527 oracle cloud infrastructure data science
20200527 oracle cloud infrastructure data science
 
[旧版]Big Data Service Overview 2020年4月版
[旧版]Big Data Service Overview 2020年4月版[旧版]Big Data Service Overview 2020年4月版
[旧版]Big Data Service Overview 2020年4月版
 
Oracle jdk 20190827 - 今、あらためてOracle提供のJDKを語る
Oracle jdk 20190827 - 今、あらためてOracle提供のJDKを語るOracle jdk 20190827 - 今、あらためてOracle提供のJDKを語る
Oracle jdk 20190827 - 今、あらためてOracle提供のJDKを語る
 
しばちょう先生が語る!オラクルデータベースの進化の歴史と最新技術動向#1
しばちょう先生が語る!オラクルデータベースの進化の歴史と最新技術動向#1しばちょう先生が語る!オラクルデータベースの進化の歴史と最新技術動向#1
しばちょう先生が語る!オラクルデータベースの進化の歴史と最新技術動向#1
 
[Modern Cloud Day Tokyo 2019] Oracle Functions = サーバーレス × Dockerコンテナ:AWS Lamb...
[Modern Cloud Day Tokyo 2019] Oracle Functions = サーバーレス × Dockerコンテナ:AWS Lamb...[Modern Cloud Day Tokyo 2019] Oracle Functions = サーバーレス × Dockerコンテナ:AWS Lamb...
[Modern Cloud Day Tokyo 2019] Oracle Functions = サーバーレス × Dockerコンテナ:AWS Lamb...
 
Oracle APEX 20.1新機能紹介
Oracle APEX 20.1新機能紹介Oracle APEX 20.1新機能紹介
Oracle APEX 20.1新機能紹介
 
OCHaCafe Season 2 #4 - Cloud Native時代のモダンJavaの世界
OCHaCafe Season 2 #4 - Cloud Native時代のモダンJavaの世界OCHaCafe Season 2 #4 - Cloud Native時代のモダンJavaの世界
OCHaCafe Season 2 #4 - Cloud Native時代のモダンJavaの世界
 
【より深く知ろう】活用最先端!データベースとアプリケーション開発をシンプルに、高速化するテクニック
【より深く知ろう】活用最先端!データベースとアプリケーション開発をシンプルに、高速化するテクニック【より深く知ろう】活用最先端!データベースとアプリケーション開発をシンプルに、高速化するテクニック
【より深く知ろう】活用最先端!データベースとアプリケーション開発をシンプルに、高速化するテクニック
 
企業システムで使えるマイクロサービスの特長と実践 (Oracle Cloudウェビナーシリーズ: 2021年4月15日)
企業システムで使えるマイクロサービスの特長と実践 (Oracle Cloudウェビナーシリーズ: 2021年4月15日)企業システムで使えるマイクロサービスの特長と実践 (Oracle Cloudウェビナーシリーズ: 2021年4月15日)
企業システムで使えるマイクロサービスの特長と実践 (Oracle Cloudウェビナーシリーズ: 2021年4月15日)
 
Oracle Database / Exadata Cloud 技術情報(Oracle Cloudウェビナーシリーズ: 2020年7月9日)
Oracle Database / Exadata Cloud 技術情報(Oracle Cloudウェビナーシリーズ: 2020年7月9日)Oracle Database / Exadata Cloud 技術情報(Oracle Cloudウェビナーシリーズ: 2020年7月9日)
Oracle Database / Exadata Cloud 技術情報(Oracle Cloudウェビナーシリーズ: 2020年7月9日)
 
Big Data Service Overview 2020年7月版
Big Data Service Overview 2020年7月版Big Data Service Overview 2020年7月版
Big Data Service Overview 2020年7月版
 
しばちょう先生が語る!オラクルデータベースの進化の歴史と最新技術動向#3
しばちょう先生が語る!オラクルデータベースの進化の歴史と最新技術動向#3しばちょう先生が語る!オラクルデータベースの進化の歴史と最新技術動向#3
しばちょう先生が語る!オラクルデータベースの進化の歴史と最新技術動向#3
 
Oracle Spatial 概要説明資料
Oracle Spatial 概要説明資料Oracle Spatial 概要説明資料
Oracle Spatial 概要説明資料
 
Java in the World of Container by David Buck
Java in the World of Container by David BuckJava in the World of Container by David Buck
Java in the World of Container by David Buck
 
20190620 multicloud share
20190620 multicloud share20190620 multicloud share
20190620 multicloud share
 
20151209 Oracle DDD オラクルで実現するクラウド・マシン・ラーニング
20151209 Oracle DDD オラクルで実現するクラウド・マシン・ラーニング20151209 Oracle DDD オラクルで実現するクラウド・マシン・ラーニング
20151209 Oracle DDD オラクルで実現するクラウド・マシン・ラーニング
 
ochacafe#6 人にもマシンにもやさしいAPIのエコシステム
ochacafe#6 人にもマシンにもやさしいAPIのエコシステムochacafe#6 人にもマシンにもやさしいAPIのエコシステム
ochacafe#6 人にもマシンにもやさしいAPIのエコシステム
 
GoldenGateテクニカルセミナー3「Oracle GoldenGate Technical Deep Dive」(2016/5/11)
GoldenGateテクニカルセミナー3「Oracle GoldenGate Technical Deep Dive」(2016/5/11)GoldenGateテクニカルセミナー3「Oracle GoldenGate Technical Deep Dive」(2016/5/11)
GoldenGateテクニカルセミナー3「Oracle GoldenGate Technical Deep Dive」(2016/5/11)
 
今年はJava進化の年!今知っておくべき新しいJava
今年はJava進化の年!今知っておくべき新しいJava今年はJava進化の年!今知っておくべき新しいJava
今年はJava進化の年!今知っておくべき新しいJava
 
[旧版]OCI Data Integration Overview 2020年7月版
[旧版]OCI Data Integration Overview 2020年7月版[旧版]OCI Data Integration Overview 2020年7月版
[旧版]OCI Data Integration Overview 2020年7月版
 

Similar to [Oracle big data jam session #1] Apache Spark ことはじめ

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
 
クラウドから始めるRのビッグデータ分析- Oracle R Enterprise in Cloud
クラウドから始めるRのビッグデータ分析- Oracle R Enterprise in Cloudクラウドから始めるRのビッグデータ分析- Oracle R Enterprise in Cloud
クラウドから始めるRのビッグデータ分析- Oracle R Enterprise in Cloud幹雄 小川
 
大量のデータ処理や分析に使えるOSS Apache Spark入門 - Open Source Conference2020 Online/Fukuoka...
大量のデータ処理や分析に使えるOSS Apache Spark入門 - Open Source Conference2020 Online/Fukuoka...大量のデータ処理や分析に使えるOSS Apache Spark入門 - Open Source Conference2020 Online/Fukuoka...
大量のデータ処理や分析に使えるOSS Apache Spark入門 - Open Source Conference2020 Online/Fukuoka...NTT DATA Technology & Innovation
 
Configureing analytics system with apache spark and object storage service of...
Configureing analytics system with apache spark and object storage service of...Configureing analytics system with apache spark and object storage service of...
Configureing analytics system with apache spark and object storage service of...Kenichi Sonoda
 
R超入門機械学習をはじめよう
R超入門機械学習をはじめようR超入門機械学習をはじめよう
R超入門機械学習をはじめよう幹雄 小川
 
大量のデータ処理や分析に使える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
 
SQL Server 使いのための Azure Synapse Analytics - Spark 入門
SQL Server 使いのための Azure Synapse Analytics - Spark 入門SQL Server 使いのための Azure Synapse Analytics - Spark 入門
SQL Server 使いのための Azure Synapse Analytics - Spark 入門Daiyu Hatakeyama
 
大量のデータ処理や分析に使えるOSS Apache Sparkのご紹介(Open Source Conference 2020 Online/Kyoto ...
大量のデータ処理や分析に使えるOSS Apache Sparkのご紹介(Open Source Conference 2020 Online/Kyoto ...大量のデータ処理や分析に使えるOSS Apache Sparkのご紹介(Open Source Conference 2020 Online/Kyoto ...
大量のデータ処理や分析に使えるOSS Apache Sparkのご紹介(Open Source Conference 2020 Online/Kyoto ...NTT DATA Technology & Innovation
 
Qlik TECH TALK 20210706 SAPデータ分析を加速するQlikのアクセレレーターパッケージご紹介
Qlik TECH TALK 20210706 SAPデータ分析を加速するQlikのアクセレレーターパッケージご紹介Qlik TECH TALK 20210706 SAPデータ分析を加速するQlikのアクセレレーターパッケージご紹介
Qlik TECH TALK 20210706 SAPデータ分析を加速するQlikのアクセレレーターパッケージご紹介QlikPresalesJapan
 
2015-11-17 きちんと知りたいApache Spark ~機械学習とさまざまな機能群
2015-11-17 きちんと知りたいApache Spark ~機械学習とさまざまな機能群2015-11-17 きちんと知りたいApache Spark ~機械学習とさまざまな機能群
2015-11-17 きちんと知りたいApache Spark ~機械学習とさまざまな機能群Yu Ishikawa
 
RでKaggleの登竜門に挑戦
RでKaggleの登竜門に挑戦RでKaggleの登竜門に挑戦
RでKaggleの登竜門に挑戦幹雄 小川
 
Spark Summit 2014 の報告と最近の取り組みについて
Spark Summit 2014 の報告と最近の取り組みについてSpark Summit 2014 の報告と最近の取り組みについて
Spark Summit 2014 の報告と最近の取り組みについてRecruit Technologies
 
さくらのDockerコンテナホスティング-Arukasの解説とインフラを支える技術(July Tech Festa 2016 『IoTxAIxインフラ時代...
さくらのDockerコンテナホスティング-Arukasの解説とインフラを支える技術(July Tech Festa 2016 『IoTxAIxインフラ時代...さくらのDockerコンテナホスティング-Arukasの解説とインフラを支える技術(July Tech Festa 2016 『IoTxAIxインフラ時代...
さくらのDockerコンテナホスティング-Arukasの解説とインフラを支える技術(July Tech Festa 2016 『IoTxAIxインフラ時代...さくらインターネット株式会社
 
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
 
経済学のための実践的データ分析 5.特許データの分析
経済学のための実践的データ分析 5.特許データの分析経済学のための実践的データ分析 5.特許データの分析
経済学のための実践的データ分析 5.特許データの分析Yasushi Hara
 
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.
 
G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006
G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006
G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006Cloudera Japan
 

Similar to [Oracle big data jam session #1] Apache Spark ことはじめ (20)

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
 
クラウドから始めるRのビッグデータ分析- Oracle R Enterprise in Cloud
クラウドから始めるRのビッグデータ分析- Oracle R Enterprise in Cloudクラウドから始めるRのビッグデータ分析- Oracle R Enterprise in Cloud
クラウドから始めるRのビッグデータ分析- Oracle R Enterprise in Cloud
 
大量のデータ処理や分析に使えるOSS Apache Spark入門 - Open Source Conference2020 Online/Fukuoka...
大量のデータ処理や分析に使えるOSS Apache Spark入門 - Open Source Conference2020 Online/Fukuoka...大量のデータ処理や分析に使えるOSS Apache Spark入門 - Open Source Conference2020 Online/Fukuoka...
大量のデータ処理や分析に使えるOSS Apache Spark入門 - Open Source Conference2020 Online/Fukuoka...
 
Configureing analytics system with apache spark and object storage service of...
Configureing analytics system with apache spark and object storage service of...Configureing analytics system with apache spark and object storage service of...
Configureing analytics system with apache spark and object storage service of...
 
R超入門機械学習をはじめよう
R超入門機械学習をはじめようR超入門機械学習をはじめよう
R超入門機械学習をはじめよう
 
大量のデータ処理や分析に使える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 発表資料)
 
SQL Server 使いのための Azure Synapse Analytics - Spark 入門
SQL Server 使いのための Azure Synapse Analytics - Spark 入門SQL Server 使いのための Azure Synapse Analytics - Spark 入門
SQL Server 使いのための Azure Synapse Analytics - Spark 入門
 
大量のデータ処理や分析に使えるOSS Apache Sparkのご紹介(Open Source Conference 2020 Online/Kyoto ...
大量のデータ処理や分析に使えるOSS Apache Sparkのご紹介(Open Source Conference 2020 Online/Kyoto ...大量のデータ処理や分析に使えるOSS Apache Sparkのご紹介(Open Source Conference 2020 Online/Kyoto ...
大量のデータ処理や分析に使えるOSS Apache Sparkのご紹介(Open Source Conference 2020 Online/Kyoto ...
 
Qlik TECH TALK 20210706 SAPデータ分析を加速するQlikのアクセレレーターパッケージご紹介
Qlik TECH TALK 20210706 SAPデータ分析を加速するQlikのアクセレレーターパッケージご紹介Qlik TECH TALK 20210706 SAPデータ分析を加速するQlikのアクセレレーターパッケージご紹介
Qlik TECH TALK 20210706 SAPデータ分析を加速するQlikのアクセレレーターパッケージご紹介
 
2015-11-17 きちんと知りたいApache Spark ~機械学習とさまざまな機能群
2015-11-17 きちんと知りたいApache Spark ~機械学習とさまざまな機能群2015-11-17 きちんと知りたいApache Spark ~機械学習とさまざまな機能群
2015-11-17 きちんと知りたいApache Spark ~機械学習とさまざまな機能群
 
Apache spark 2.3 and beyond
Apache spark 2.3 and beyondApache spark 2.3 and beyond
Apache spark 2.3 and beyond
 
RでKaggleの登竜門に挑戦
RでKaggleの登竜門に挑戦RでKaggleの登竜門に挑戦
RでKaggleの登竜門に挑戦
 
Spark Summit 2014 の報告と最近の取り組みについて
Spark Summit 2014 の報告と最近の取り組みについてSpark Summit 2014 の報告と最近の取り組みについて
Spark Summit 2014 の報告と最近の取り組みについて
 
さくらのDockerコンテナホスティング-Arukasの解説とインフラを支える技術(July Tech Festa 2016 『IoTxAIxインフラ時代...
さくらのDockerコンテナホスティング-Arukasの解説とインフラを支える技術(July Tech Festa 2016 『IoTxAIxインフラ時代...さくらのDockerコンテナホスティング-Arukasの解説とインフラを支える技術(July Tech Festa 2016 『IoTxAIxインフラ時代...
さくらのDockerコンテナホスティング-Arukasの解説とインフラを支える技術(July Tech Festa 2016 『IoTxAIxインフラ時代...
 
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 ...
 
Apache Spark + Arrow
Apache Spark + ArrowApache Spark + Arrow
Apache Spark + Arrow
 
経済学のための実践的データ分析 5.特許データの分析
経済学のための実践的データ分析 5.特許データの分析経済学のための実践的データ分析 5.特許データの分析
経済学のための実践的データ分析 5.特許データの分析
 
GDLC11 oracle-ai
GDLC11 oracle-aiGDLC11 oracle-ai
GDLC11 oracle-ai
 
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-
 
G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006
G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006
G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006
 

More from Kenichi Sonoda

[Oracle Code Night] Reinforcement Learning Demo Code
[Oracle Code Night] Reinforcement Learning Demo Code[Oracle Code Night] Reinforcement Learning Demo Code
[Oracle Code Night] Reinforcement Learning Demo CodeKenichi Sonoda
 
20210831 code night はじめての強化学習
20210831 code night  はじめての強化学習20210831 code night  はじめての強化学習
20210831 code night はじめての強化学習Kenichi Sonoda
 
20210531 ora jam_stackgan
20210531 ora jam_stackgan20210531 ora jam_stackgan
20210531 ora jam_stackganKenichi Sonoda
 
[Code night 20200531]machine learning for begginer generation of virtual rea...
[Code night 20200531]machine learning for begginer  generation of virtual rea...[Code night 20200531]machine learning for begginer  generation of virtual rea...
[Code night 20200531]machine learning for begginer generation of virtual rea...Kenichi Sonoda
 
20210226[oracle code night] 機械学習入門:ディープラーニングの基礎から転移学習まで
20210226[oracle code night] 機械学習入門:ディープラーニングの基礎から転移学習まで20210226[oracle code night] 機械学習入門:ディープラーニングの基礎から転移学習まで
20210226[oracle code night] 機械学習入門:ディープラーニングの基礎から転移学習までKenichi Sonoda
 
[Code night] natural language proccessing and machine learning
[Code night] natural language proccessing and machine learning[Code night] natural language proccessing and machine learning
[Code night] natural language proccessing and machine learningKenichi Sonoda
 
20200812 Cbject Detection with OpenCV and CNN
20200812 Cbject Detection with OpenCV and CNN20200812 Cbject Detection with OpenCV and CNN
20200812 Cbject Detection with OpenCV and CNNKenichi Sonoda
 
20200402 oracle cloud infrastructure data science
20200402 oracle cloud infrastructure data science20200402 oracle cloud infrastructure data science
20200402 oracle cloud infrastructure data scienceKenichi Sonoda
 
Oracle cloud infrastructure shared file service comparison 20181019 ss
Oracle cloud infrastructure shared file service comparison 20181019 ssOracle cloud infrastructure shared file service comparison 20181019 ss
Oracle cloud infrastructure shared file service comparison 20181019 ssKenichi Sonoda
 
Oci file storage service deep dive 20181001 ss
Oci file storage service deep dive 20181001 ssOci file storage service deep dive 20181001 ss
Oci file storage service deep dive 20181001 ssKenichi Sonoda
 
Oci object storage deep dive 20190329 ss
Oci object storage deep dive 20190329 ssOci object storage deep dive 20190329 ss
Oci object storage deep dive 20190329 ssKenichi Sonoda
 

More from Kenichi Sonoda (12)

Ocha_MLflow_MLOps.pdf
Ocha_MLflow_MLOps.pdfOcha_MLflow_MLOps.pdf
Ocha_MLflow_MLOps.pdf
 
[Oracle Code Night] Reinforcement Learning Demo Code
[Oracle Code Night] Reinforcement Learning Demo Code[Oracle Code Night] Reinforcement Learning Demo Code
[Oracle Code Night] Reinforcement Learning Demo Code
 
20210831 code night はじめての強化学習
20210831 code night  はじめての強化学習20210831 code night  はじめての強化学習
20210831 code night はじめての強化学習
 
20210531 ora jam_stackgan
20210531 ora jam_stackgan20210531 ora jam_stackgan
20210531 ora jam_stackgan
 
[Code night 20200531]machine learning for begginer generation of virtual rea...
[Code night 20200531]machine learning for begginer  generation of virtual rea...[Code night 20200531]machine learning for begginer  generation of virtual rea...
[Code night 20200531]machine learning for begginer generation of virtual rea...
 
20210226[oracle code night] 機械学習入門:ディープラーニングの基礎から転移学習まで
20210226[oracle code night] 機械学習入門:ディープラーニングの基礎から転移学習まで20210226[oracle code night] 機械学習入門:ディープラーニングの基礎から転移学習まで
20210226[oracle code night] 機械学習入門:ディープラーニングの基礎から転移学習まで
 
[Code night] natural language proccessing and machine learning
[Code night] natural language proccessing and machine learning[Code night] natural language proccessing and machine learning
[Code night] natural language proccessing and machine learning
 
20200812 Cbject Detection with OpenCV and CNN
20200812 Cbject Detection with OpenCV and CNN20200812 Cbject Detection with OpenCV and CNN
20200812 Cbject Detection with OpenCV and CNN
 
20200402 oracle cloud infrastructure data science
20200402 oracle cloud infrastructure data science20200402 oracle cloud infrastructure data science
20200402 oracle cloud infrastructure data science
 
Oracle cloud infrastructure shared file service comparison 20181019 ss
Oracle cloud infrastructure shared file service comparison 20181019 ssOracle cloud infrastructure shared file service comparison 20181019 ss
Oracle cloud infrastructure shared file service comparison 20181019 ss
 
Oci file storage service deep dive 20181001 ss
Oci file storage service deep dive 20181001 ssOci file storage service deep dive 20181001 ss
Oci file storage service deep dive 20181001 ss
 
Oci object storage deep dive 20190329 ss
Oci object storage deep dive 20190329 ssOci object storage deep dive 20190329 ss
Oci object storage deep dive 20190329 ss
 

[Oracle big data jam session #1] Apache Spark ことはじめ

  • 1. Copyright © 2019,Oracle and/orits affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted
  • 2. Copyright © 2019,Oracle and/orits affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted Apache Sparkことはじめ 園田憲一 日本オラクル株式会社 サンプル・コードから学ぶApache Spark Oracle Code Night Oracle Big Data Jam Session #1
  • 3. Copyright © 2019,Oracle and/orits affiliates. All rights reserved. | • カリフォルニア大学バークレー校 AMPLabで開発スタート • 2014年Apache Software Foundation から初回リリース • 短期間で圧倒的な人気を獲得した オープンソースソフトウェア • 高性能かつ生産性の高いライブラリ 群 • 豊富なエコシステム • 開発言語 – Scala, Java, Python, R, SQL Confidential – Oracle Internal/Restricted/Highly Restricted 3 Apache Spark
  • 4. Copyright © 2019,Oracle and/orits affiliates. All rights reserved. | • Spark Core – Resilient Distribute Dataset(Sparkの内部的な 基本データ構造)を構成 – 基本的なデータ操作 • Spark SQL – SQLによるデータ操作 – その他のライブラリと併用可 • Spark Streaming – リアルタイム処理用のライブラリ • Spark ML – 機械学習用、統計処理用ライブラリ • Spark Graph – グラフ処理用ライブラリ Confidential – Oracle Internal/Restricted/Highly Restricted 4 Apache Sparkのライブラリ http://spark.apache.org/
  • 5. Copyright © 2019,Oracle and/orits affiliates. All rights reserved. | • SQLでデータ処理を行うためのライブ ラリ • 非構造化データにスキーマ(列、行、 データ型)を定義 • データ処理 – 集計処理、ソート処理、結合処理など • その他のライブラリ(ML、Streaming、 Graph)でも利用可能 • 対応ファイルフォーマット – CSV, XML, JSON – Avro, Parquet, ORC Confidential – Oracle Internal/Restricted/Highly Restricted 5 Spark SQL // 表の作成 0: jdbc:hive2://localhost:10015> create table movies(actor string, title string, year int) row format delimited fields terminated by ',' lines terminated by '¥n’; // csvファイルからのデータロード 0: jdbc:hive2://localhost:10015> load data local inpath '/home/opc/data/movies.csv' into table movies; // 全件検索の実行 0: jdbc:hive2://localhost:10015> select * from movies; +-----------------+---------------+-------+ | actor| title| year| +-----------------+---------------+-------+ |McClure, Marc (I)| Freaky Friday| 2003| |McClure, Marc (I)| Coach Carter| 2005| |McClure, Marc (I)| Superman II| 1980| |McClure, Marc (I)| Apollo 13| 1995|
  • 6. Copyright © 2019,Oracle and/orits affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 6 Spark ML • 機械学習のライブラリ • 様々な統計アルゴリズムをサポート カテゴリ 統計アルゴリズム 分類回帰 SVM(Support Vector Machine), Logistic Regression, Linear Regression, Naive Bayes, Decision Trees, Ensembles of Trees(Random Forests, Gradient boosted Trees), Isotonic Regression 協調フィルタリング ALS(Alternating Least Squares) クラスタリング K-means, Gaussian mixture, PIC(Power Iteration Clustering), Latent Dirichlet Allocation(LAD), Streaming k-means 次元削減 SVD(Singular Value Decomposition), PCA(Principal Component Analysis) 特徴抽出、変換 TF-IDF, Workd2Vec, StnadardScalar, Normalizer, Feature selection, ElementwiseProduct, PCA 頻出パターン マイニング FP-Growth, Association Rues, RefixSpan 学習 データ 学習プ ログラ ム 予測 モデル 予測 データ 予測 結果 入力 出力 機械学習のワークフロー 学習フェーズ 予測フェーズ
  • 7. Copyright © 2019,Oracle and/orits affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 7 Spark ML サンプルコード①概要 学習 データ 正解 ラベル 学習データの準備 学習器 特徴 抽出 パイプライン 学習 予測モデル 正解 ラベル 予測結果 未知の データ 予測データの準備学習フェーズ 予 測 フ ェ ー ズ +----------------+-----+ | text|label| +----------------+-----+ | spark i j k| ? | | l m n| ? | | mapreduce spark| ? | | apache hadoop| ? | +----------------+-----+ +----------------+-----+ | text|label| +----------------+-----+ | a b c d e spark| 1.0| | b d| 0.0| | spark f g h| 1.0| |hadoop mapreduce| 0.0| | b spark who| 1.0| | g d a y| 0.0| | spark fly| 1.0| | was mapreduce| 0.0| | e spark program| 1.0| | a e c l| 0.0| | spark compile | 1.0| |hadoop software | 0.0| +----------------+-----+ 入力 出力 サンプルコードの概要 正解ラベル付きの学習データから特徴を学習し、未知のデー タの正解ラベルを予測する。 • 学習データ:テキストデータ(正解ラベル付き) • 学習プログラム:テキストデータを単語に区切り、特徴抽出 • 予測モデル:「spark」という文字列が入っているかいないか
  • 8. Copyright © 2019,Oracle and/orits affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 8 Spark ML サンプルコード②データの準備 学習 データ 正解 ラベル 学習データの準備 学習器 特徴 抽出 パイプライン 学習 予測モデル 正解 ラベル 予測結果 未知の データ 予測データの準備学習フェーズ 予 測 フ ェ ー ズ training = spark.createDataFrame([ (0, "a b c d e spark", 1.0), (1, "b d", 0.0), (2, "spark f g h", 1.0), (3, "hadoop mapreduce", 0.0), (4, "b spark who", 1.0), (5, "g d a y", 0.0), (6, "spark fly", 1.0), (7, "was mapreduce", 0.0), (8, "e spark program", 1.0), (9, "a e c l", 0.0), (10, "spark compile", 1.0), (11, "hadoop software", 0.0) ], ["id", "text", "label"]) 入力 出力
  • 9. Copyright © 2019,Oracle and/orits affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 9 Spark ML サンプルコード③学習、予測モデルの作成 学習 データ 正解 ラベル 学習データの準備 学習器 特徴 抽出 パイプライン 学習 予測モデル 正解 ラベル 予測結果 未知の データ 予測データの準備学習フェーズ 予 測 フ ェ ー ズ // 特徴抽出の定義 tokenizer = Tokenizer(inputCol='text', outputCol='words') hashingTF = HashingTF(inputCol=tokenizer.getOutputCol(), outputCol='features') // 学習器としてロジスティック回帰を指定 lr = LogisticRegression(maxIter=10) // 特徴抽出と学習器をPipelineとして登録 pipeline = Pipeline(stages=[tokenizer, hashingTF, lr]) //学習を実行し、予測モデルを生成 model = pipeline.fit(training) 入力 出力
  • 10. Copyright © 2019,Oracle and/orits affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 10 Spark ML サンプルコード④予測データの準備と予測実行 学習 データ 正解 ラベル 学習データの準備 学習器 特徴 抽出 パイプライン 学習 予測モデル 正解 ラベル 予測結果 未知の データ 予測データの準備学習フェーズ 予 測 フ ェ ー ズ // 予測データの準備 test = spark.createDataFrame([ (4, "spark i j k"), (5, "l m n"), (6, "mapreduce spark"), (7, "apache hadoop") ], ["id", "text"]) 入力 出力 // 予測の実行、結果の確認 predict = model.transform(test) predict.select('id', 'text','prediction').show(truncate=False) +---+---------------+----------+ |id |text |prediction| +---+---------------+----------+ |4 |spark i j k |1.0 | |5 |l m n |0.0 | |6 |mapreduce spark|1.0 | |7 |apache hadoop |0.0 | +---+---------------+----------+
  • 11. Copyright © 2019,Oracle and/orits affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 11 Spark Streaming • ストリーミングデータに対するリアルタイム処理のためのライブラリ • 絶え間なく発生するデータを次々と処理して次々と結果を返し、その 結果をもとにアクションを実行 連 携 シ ス テ ム 結果データ 処理 結果データ 処理 結果データ 処理 デ ー タ ソ ー ス 時刻 T のデータ 時刻 T + 1 のデータ 時刻 T + 2 のデータ ストリーム ストリーム ストリーム 連携 連携 連携 アクション アクション アクション 時間軸 Spark クラスタ
  • 12. Copyright © 2019,Oracle and/orits affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 12 Spark Streaming サンプル・コード概要 $ nc –lk 9999 hello world(⏎キー) test test(⏎キー) hoge hoge(⏎キー) ------------------------------------------- Time: 1357008430000 ms ------------------------------------------- (hello,1) (world,1) ------------------------------------------- Time: 1482008230000 ms ------------------------------------------- (test,2) ------------------------------------------- Time: 1322001210000 ms ------------------------------------------- (hoge,2) ターミナル1 : ストリームデータの生成 ターミナル2 : 結果の出力 Hello, 1 World, 1 Hello world ワード カウント 処理 デ ー タ ソ ー ス ストリーム ストリーム ストリーム test, 2 test test ワード カウント 処理 hoge, 2 hoge hoge ワード カウント 処理 サンプルコードの概要 ターミナルから随時入力されるテキストデータに対してワードカ ウント処理を行い、単語の出現数を返す • ストリームデータ:随時入力されるテキストデータ • ストリーム処理:ワードカウント(一秒間隔で繰り返す)
  • 13. Copyright © 2019,Oracle and/orits affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 13 Spark Streaming サンプル・コード // 入力ストリームデータの定義(1秒間隔でバッチ処理を繰り返す) val ssc = new StreamingContext(sc, Seconds(1)) //入力データソースの定義(9999番ポートでオープンしたTCPソケッ トにローカルホストから接続) val lines = ssc.socketTextStream("localhost", 9999) //ストリームデータのテキストをスペース区切りで分割 val words = lines.flatMap(_.split(" ")) //単語をカウントし、単語と出現数を標準出力に出力 val pairs = words.map(word => (word, 1)) val wordCounts = pairs.reduceByKey(_ + _) wordCounts.print() // 定義したストリーム処理の開始 ssc.start() Hello, 1 World, 1 Hello world ワード カウント 処理 デ ー タ ソ ー ス ストリーム ストリーム ストリーム test, 2 test test ワード カウント 処理 hoge, 2 hoge hoge ワード カウント 処理 サンプルコードの概要 ターミナルから随時入力されるテキストデータに対してワードカ ウント処理を行い、単語の出現数を返す • ストリームデータ:随時入力されるテキストデータ • ストリーム処理:ワードカウント(一秒間隔で繰り返す)
  • 14. Copyright © 2019,Oracle and/orits affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 14 Spark Streaming サンプル・コード $ nc –lk 9999 hello world(⏎キー) test test(⏎キー) hoge hoge(⏎キー) ------------------------------------------- Time: 1357008430000 ms ------------------------------------------- (hello,1) (world,1) ------------------------------------------- Time: 1482008230000 ms ------------------------------------------- (test,2) ------------------------------------------- Time: 1322001210000 ms ------------------------------------------- (hoge,2) ターミナル1 : ストリームデータの生成 ターミナル2 : 結果の出力 Hello, 1 World, 1 Hello world ワード カウント 処理 デ ー タ ソ ー ス ストリーム ストリーム ストリーム test, 2 test test ワード カウント 処理 hoge, 2 hoge hoge ワード カウント 処理 サンプルコードの概要 ターミナルから随時入力されるテキストデータに対してワードカ ウント処理を行い、単語の出現数を返す • ストリームデータ:随時入力されるテキストデータ • ストリーム処理:ワードカウント(一秒間隔で繰り返す)
  • 15. Copyright © 2019,Oracle and/orits affiliates. All rights reserved. | • 世の中のあらゆる“関係性”を定義し、分 析するライブラリ • グラフのデータモデル – 「頂点(Vertex) 」」と「辺(Edge) 」からなるデータ 構造 – 頂点に「モノ」、辺に「頂点同志の関係」を定義 する – 「頂点」と「辺 」に属性や情報を定義する • データ処理の例 – 任意の頂点までの経路を表示 – 任意の関係の頂点を全てリスト – 任意の頂点に繋がっている頂点の数のカウン ト – ページランク Confidential – Oracle Internal/Restricted/Highly Restricted 15 Spark Graph 頂点(Vertex) 辺(Edge) グラフデータモデル ユーザーA (田中, 46歳) ユーザーB (鈴木, 20歳) ユーザーC (山田, 18歳) ユーザーD (林, 35歳) ユーザーE (井上, 60歳) follow follow follow follow follow 商品A (本, 1980円) 商品B (鉛筆, 100円) ユーザーA (山田, 18歳) ユーザーB (小山, 25歳) 購入済 商品C (ノート, 200円) 購入済購入済 SNSの例 ショッピングサイトの例
  • 16. Copyright © 2019,Oracle and/orits affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 16 Spark Graph サンプル・コード①概要とデータモデルの定義 ユーザーa (Alice, 34) ユーザーd (Deck, 52) ユーザーb (Bob, 36) ユーザーc (Charlie, 30) ユーザーe (Evan, 20) ユーザーf (Farr, 52) friend friend family family Colleague friend Colleague // 頂点(各ユーザー)の定義 >>> v = sqlContext.createDataFrame([ ... ("a", "Alice", 34), ... ("b", "Bob", 36), ... ("c", "Charlie", 30), ... ("d", "Deck", 52), ... ("e", "Evan", 20), ... ("f", "Farr", 18), ... ], ["id", "name", "age"]) // 辺(各ユーザーの関係)を定義 >>> e = sqlContext.createDataFrame([ ... ("a", "b", "family"), ... ("a", "c", "friend"), -----------中略-------------------- ... ("e", "a", "Colleague"), ... ("e", "c", "friend"), ... ("f", "c", "friend"), ... ], ["src", "dst", "relationship"]) // 頂点と辺をグラフデータモデルとして定義 >>> g = GraphFrame(v, e) 登録されているユーザーの中から友人関係のユー ザーのみを検索する • 頂点(Vertex) : 登録ユーザー • 辺(Edge) : 登録ユーザーの関係
  • 17. Copyright © 2019,Oracle and/orits affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 17 Spark Graph サンプル・コード②クエリを実行 // 友達の関係にあるユーザーを検索する >>> g.edges.filter("relationship = 'friend'").show() +---+---+------------+ |src|dst|relationship| +---+---+------------+ | a| c| friend| | c| a| friend| | c| f| friend| | c| e| friend| | e| c| friend| | f| c| friend| +---+---+------------+ ユーザーa (Alice, 34) ユーザーd (Deck, 52) ユーザーb (Bob, 36) ユーザーc (Charlie, 30) ユーザーe (Evan, 20) ユーザーf (Farr, 52) friend friend family family Colleague friend Colleague ユーザーa (Alice, 34) ユーザーd (Deck, 52) ユーザーb (Bob, 36) ユーザーc (Charlie, 30) ユーザーe (Evan, 20) ユーザーf (Farr, 52) friend friend family family Colleague friend Colleague 登録されているユーザーの中から友人関係のユー ザーのみを検索する • 頂点(Vertex) : 登録ユーザー • 辺(Edge) : 登録ユーザーの関係
  • 18. Copyright © 2019,Oracle and/orits affiliates. All rights reserved. | • OCI Big Data Service – Clouderaのサーバレス・サービス – クラスタの作成、管理を容易に – Cloudera Managerなどこれまでの使い勝手は そのままで • OCI Data Flow Service – Apache Sparkのサーバレス・サービス – Sparkクラスタの構築、管理が不要 – 3ステップでSpark処理が完了 • データとプログラムのアップロード • プログラムをアプリケーションとして登録 • アプリケーションの実行 Confidential – Oracle Internal/Restricted/Highly Restricted 18 Spark関連のOCIサーバーレスサービス
  • 19. Copyright © 2019,Oracle and/orits affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 19