Submit Search
Upload
Sparkのクエリ処理系と周辺の話題
•
10 likes
•
2,805 views
Takeshi Yamamuro
Follow
20161222のBDI研究会での発表資料
Read less
Read more
Engineering
Report
Share
Report
Share
1 of 25
Download now
Download to read offline
Recommended
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
NTT DATA OSS Professional Services
HBaseとSparkでセンサーデータを有効活用 #hbasejp
HBaseとSparkでセンサーデータを有効活用 #hbasejp
FwardNetwork
Sparkによる GISデータを題材とした時系列データ処理 (Hadoop / Spark Conference Japan 2016 講演資料)
Sparkによる GISデータを題材とした時系列データ処理 (Hadoop / Spark Conference Japan 2016 講演資料)
Hadoop / Spark Conference Japan
ビッグデータ活用を加速する!分散SQLエンジン Spark SQL のご紹介 20161105 OSC Tokyo Fall
ビッグデータ活用を加速する!分散SQLエンジン Spark SQL のご紹介 20161105 OSC Tokyo Fall
YusukeKuramata
Spark勉強会_ibm_20151014-公開版
Spark勉強会_ibm_20151014-公開版
Atsushi Tsuchiya
SQL on Hadoop 比較検証 【2014月11日における検証レポート】
SQL on Hadoop 比較検証 【2014月11日における検証レポート】
NTT DATA OSS Professional Services
Sparkを用いたビッグデータ解析 〜 前編 〜
Sparkを用いたビッグデータ解析 〜 前編 〜
x1 ichi
Apache Spark 1000 nodes NTT DATA
Apache Spark 1000 nodes NTT DATA
NTT DATA OSS Professional Services
Recommended
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
NTT DATA OSS Professional Services
HBaseとSparkでセンサーデータを有効活用 #hbasejp
HBaseとSparkでセンサーデータを有効活用 #hbasejp
FwardNetwork
Sparkによる GISデータを題材とした時系列データ処理 (Hadoop / Spark Conference Japan 2016 講演資料)
Sparkによる GISデータを題材とした時系列データ処理 (Hadoop / Spark Conference Japan 2016 講演資料)
Hadoop / Spark Conference Japan
ビッグデータ活用を加速する!分散SQLエンジン Spark SQL のご紹介 20161105 OSC Tokyo Fall
ビッグデータ活用を加速する!分散SQLエンジン Spark SQL のご紹介 20161105 OSC Tokyo Fall
YusukeKuramata
Spark勉強会_ibm_20151014-公開版
Spark勉強会_ibm_20151014-公開版
Atsushi Tsuchiya
SQL on Hadoop 比較検証 【2014月11日における検証レポート】
SQL on Hadoop 比較検証 【2014月11日における検証レポート】
NTT DATA OSS Professional Services
Sparkを用いたビッグデータ解析 〜 前編 〜
Sparkを用いたビッグデータ解析 〜 前編 〜
x1 ichi
Apache Spark 1000 nodes NTT DATA
Apache Spark 1000 nodes NTT DATA
NTT DATA OSS Professional Services
Apache Hadoop and YARN, current development status
Apache Hadoop and YARN, current development status
NTT DATA OSS Professional Services
Pythonで入門するApache Spark at PyCon2016
Pythonで入門するApache Spark at PyCon2016
Tatsuya Atsumi
Apache Spark チュートリアル
Apache Spark チュートリアル
K Yamaguchi
Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)
Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)
NTT DATA OSS Professional Services
Apache Sparkについて
Apache Sparkについて
BrainPad Inc.
HiveとImpalaのおいしいとこ取り
HiveとImpalaのおいしいとこ取り
Yukinori Suda
Sparkをノートブックにまとめちゃおう。Zeppelinでね!(Hadoopソースコードリーディング 第19回 発表資料)
Sparkをノートブックにまとめちゃおう。Zeppelinでね!(Hadoopソースコードリーディング 第19回 発表資料)
NTT DATA OSS Professional Services
Spark Streamingを活用したシステムの検証結果と設計時のノウハウ
Spark Streamingを活用したシステムの検証結果と設計時のノウハウ
Future Of Data Japan
Apache Sparkの紹介
Apache Sparkの紹介
Ryuji Tamagawa
QConTokyo2015「Sparkを用いたビッグデータ解析 〜後編〜」
QConTokyo2015「Sparkを用いたビッグデータ解析 〜後編〜」
Kazuki Taniguchi
ストリームデータ分散処理基盤Storm
ストリームデータ分散処理基盤Storm
NTT DATA OSS Professional Services
サポートメンバは見た! Hadoopバグワースト10 (adoop / Spark Conference Japan 2016 ライトニングトーク発表資料)
サポートメンバは見た! Hadoopバグワースト10 (adoop / Spark Conference Japan 2016 ライトニングトーク発表資料)
NTT DATA OSS Professional Services
Hadoopエコシステムの最新動向とNTTデータの取り組み (OSC 2016 Tokyo/Spring 講演資料)
Hadoopエコシステムの最新動向とNTTデータの取り組み (OSC 2016 Tokyo/Spring 講演資料)
NTT DATA OSS Professional Services
初めてのSpark streaming 〜kafka+sparkstreamingの紹介〜
初めてのSpark streaming 〜kafka+sparkstreamingの紹介〜
Tanaka Yuichi
本当にあったApache Spark障害の話
本当にあったApache Spark障害の話
x1 ichi
ゼロから始めるSparkSQL徹底活用!
ゼロから始めるSparkSQL徹底活用!
Nagato Kasaki
Hadoop2.6の最新機能+
Hadoop2.6の最新機能+
NTT DATA OSS Professional Services
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
YusukeKuramata
MapReduce/Spark/Tezのフェアな性能比較に向けて (Cloudera World Tokyo 2014 LT講演)
MapReduce/Spark/Tezのフェアな性能比較に向けて (Cloudera World Tokyo 2014 LT講演)
Hadoop / Spark Conference Japan
SparkとCassandraの美味しい関係
SparkとCassandraの美味しい関係
datastaxjp
Apache spark 2.3 and beyond
Apache spark 2.3 and beyond
NTT DATA Technology & Innovation
hscj2019_ishizaki_public
hscj2019_ishizaki_public
Kazuaki Ishizaki
More Related Content
What's hot
Apache Hadoop and YARN, current development status
Apache Hadoop and YARN, current development status
NTT DATA OSS Professional Services
Pythonで入門するApache Spark at PyCon2016
Pythonで入門するApache Spark at PyCon2016
Tatsuya Atsumi
Apache Spark チュートリアル
Apache Spark チュートリアル
K Yamaguchi
Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)
Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)
NTT DATA OSS Professional Services
Apache Sparkについて
Apache Sparkについて
BrainPad Inc.
HiveとImpalaのおいしいとこ取り
HiveとImpalaのおいしいとこ取り
Yukinori Suda
Sparkをノートブックにまとめちゃおう。Zeppelinでね!(Hadoopソースコードリーディング 第19回 発表資料)
Sparkをノートブックにまとめちゃおう。Zeppelinでね!(Hadoopソースコードリーディング 第19回 発表資料)
NTT DATA OSS Professional Services
Spark Streamingを活用したシステムの検証結果と設計時のノウハウ
Spark Streamingを活用したシステムの検証結果と設計時のノウハウ
Future Of Data Japan
Apache Sparkの紹介
Apache Sparkの紹介
Ryuji Tamagawa
QConTokyo2015「Sparkを用いたビッグデータ解析 〜後編〜」
QConTokyo2015「Sparkを用いたビッグデータ解析 〜後編〜」
Kazuki Taniguchi
ストリームデータ分散処理基盤Storm
ストリームデータ分散処理基盤Storm
NTT DATA OSS Professional Services
サポートメンバは見た! Hadoopバグワースト10 (adoop / Spark Conference Japan 2016 ライトニングトーク発表資料)
サポートメンバは見た! Hadoopバグワースト10 (adoop / Spark Conference Japan 2016 ライトニングトーク発表資料)
NTT DATA OSS Professional Services
Hadoopエコシステムの最新動向とNTTデータの取り組み (OSC 2016 Tokyo/Spring 講演資料)
Hadoopエコシステムの最新動向とNTTデータの取り組み (OSC 2016 Tokyo/Spring 講演資料)
NTT DATA OSS Professional Services
初めてのSpark streaming 〜kafka+sparkstreamingの紹介〜
初めてのSpark streaming 〜kafka+sparkstreamingの紹介〜
Tanaka Yuichi
本当にあったApache Spark障害の話
本当にあったApache Spark障害の話
x1 ichi
ゼロから始めるSparkSQL徹底活用!
ゼロから始めるSparkSQL徹底活用!
Nagato Kasaki
Hadoop2.6の最新機能+
Hadoop2.6の最新機能+
NTT DATA OSS Professional Services
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
YusukeKuramata
MapReduce/Spark/Tezのフェアな性能比較に向けて (Cloudera World Tokyo 2014 LT講演)
MapReduce/Spark/Tezのフェアな性能比較に向けて (Cloudera World Tokyo 2014 LT講演)
Hadoop / Spark Conference Japan
SparkとCassandraの美味しい関係
SparkとCassandraの美味しい関係
datastaxjp
What's hot
(20)
Apache Hadoop and YARN, current development status
Apache Hadoop and YARN, current development status
Pythonで入門するApache Spark at PyCon2016
Pythonで入門するApache Spark at PyCon2016
Apache Spark チュートリアル
Apache Spark チュートリアル
Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)
Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)
Apache Sparkについて
Apache Sparkについて
HiveとImpalaのおいしいとこ取り
HiveとImpalaのおいしいとこ取り
Sparkをノートブックにまとめちゃおう。Zeppelinでね!(Hadoopソースコードリーディング 第19回 発表資料)
Sparkをノートブックにまとめちゃおう。Zeppelinでね!(Hadoopソースコードリーディング 第19回 発表資料)
Spark Streamingを活用したシステムの検証結果と設計時のノウハウ
Spark Streamingを活用したシステムの検証結果と設計時のノウハウ
Apache Sparkの紹介
Apache Sparkの紹介
QConTokyo2015「Sparkを用いたビッグデータ解析 〜後編〜」
QConTokyo2015「Sparkを用いたビッグデータ解析 〜後編〜」
ストリームデータ分散処理基盤Storm
ストリームデータ分散処理基盤Storm
サポートメンバは見た! Hadoopバグワースト10 (adoop / Spark Conference Japan 2016 ライトニングトーク発表資料)
サポートメンバは見た! Hadoopバグワースト10 (adoop / Spark Conference Japan 2016 ライトニングトーク発表資料)
Hadoopエコシステムの最新動向とNTTデータの取り組み (OSC 2016 Tokyo/Spring 講演資料)
Hadoopエコシステムの最新動向とNTTデータの取り組み (OSC 2016 Tokyo/Spring 講演資料)
初めてのSpark streaming 〜kafka+sparkstreamingの紹介〜
初めてのSpark streaming 〜kafka+sparkstreamingの紹介〜
本当にあったApache Spark障害の話
本当にあったApache Spark障害の話
ゼロから始めるSparkSQL徹底活用!
ゼロから始めるSparkSQL徹底活用!
Hadoop2.6の最新機能+
Hadoop2.6の最新機能+
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
MapReduce/Spark/Tezのフェアな性能比較に向けて (Cloudera World Tokyo 2014 LT講演)
MapReduce/Spark/Tezのフェアな性能比較に向けて (Cloudera World Tokyo 2014 LT講演)
SparkとCassandraの美味しい関係
SparkとCassandraの美味しい関係
Similar to Sparkのクエリ処理系と周辺の話題
Apache spark 2.3 and beyond
Apache spark 2.3 and beyond
NTT DATA Technology & Innovation
hscj2019_ishizaki_public
hscj2019_ishizaki_public
Kazuaki Ishizaki
SparkやBigQueryなどを用いたモバイルゲーム分析環境
SparkやBigQueryなどを用いたモバイルゲーム分析環境
yuichi_komatsu
Bluemixを使ったTwitter分析
Bluemixを使ったTwitter分析
Tanaka Yuichi
Spark Streamingを使ってみた ~Twitterリアルタイムトレンドランキング~
Spark Streamingを使ってみた ~Twitterリアルタイムトレンドランキング~
sugiyama koki
ゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せます
infinite_loop
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例
Shigeru UCHIYAMA
MapReduceを置き換えるSpark 〜HadoopとSparkの統合〜 #cwt2015
MapReduceを置き換えるSpark 〜HadoopとSparkの統合〜 #cwt2015
Cloudera Japan
[db tech showcase Tokyo 2016] B31: Spark Summit 2016@SFに参加してきたので最新事例などを紹介しつつデ...
[db tech showcase Tokyo 2016] B31: Spark Summit 2016@SFに参加してきたので最新事例などを紹介しつつデ...
Insight Technology, Inc.
大量のデータ処理や分析に使えるOSS Apache Sparkのご紹介(Open Source Conference 2020 Online/Kyoto ...
大量のデータ処理や分析に使えるOSS Apache Sparkのご紹介(Open Source Conference 2020 Online/Kyoto ...
NTT DATA Technology & Innovation
TerraformでECS+ECRする話
TerraformでECS+ECRする話
Satoshi Hirayama
Apache Sparkを使った感情極性分析
Apache Sparkを使った感情極性分析
Tanaka Yuichi
Survey of Apache Spark
Survey of Apache Spark
Mila, Université de Montréal
2014 11-20 Machine Learning with Apache Spark 勉強会資料
2014 11-20 Machine Learning with Apache Spark 勉強会資料
Recruit Technologies
Deep Learning On Apache Spark
Deep Learning On Apache Spark
Yuta Imai
TripleOの光と闇
TripleOの光と闇
Manabu Ori
dstn交流会_DataSpider のソーシャルとの融合、手組との融合
dstn交流会_DataSpider のソーシャルとの融合、手組との融合
dstn
Spring “BigData”
Spring “BigData”
Recruit Technologies
なにわテック20180127
なにわテック20180127
Natsutani Minoru
Prepare for Java 9 #jjug
Prepare for Java 9 #jjug
Yuji Kubota
Similar to Sparkのクエリ処理系と周辺の話題
(20)
Apache spark 2.3 and beyond
Apache spark 2.3 and beyond
hscj2019_ishizaki_public
hscj2019_ishizaki_public
SparkやBigQueryなどを用いたモバイルゲーム分析環境
SparkやBigQueryなどを用いたモバイルゲーム分析環境
Bluemixを使ったTwitter分析
Bluemixを使ったTwitter分析
Spark Streamingを使ってみた ~Twitterリアルタイムトレンドランキング~
Spark Streamingを使ってみた ~Twitterリアルタイムトレンドランキング~
ゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せます
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例
MapReduceを置き換えるSpark 〜HadoopとSparkの統合〜 #cwt2015
MapReduceを置き換えるSpark 〜HadoopとSparkの統合〜 #cwt2015
[db tech showcase Tokyo 2016] B31: Spark Summit 2016@SFに参加してきたので最新事例などを紹介しつつデ...
[db tech showcase Tokyo 2016] B31: Spark Summit 2016@SFに参加してきたので最新事例などを紹介しつつデ...
大量のデータ処理や分析に使えるOSS Apache Sparkのご紹介(Open Source Conference 2020 Online/Kyoto ...
大量のデータ処理や分析に使えるOSS Apache Sparkのご紹介(Open Source Conference 2020 Online/Kyoto ...
TerraformでECS+ECRする話
TerraformでECS+ECRする話
Apache Sparkを使った感情極性分析
Apache Sparkを使った感情極性分析
Survey of Apache Spark
Survey of Apache Spark
2014 11-20 Machine Learning with Apache Spark 勉強会資料
2014 11-20 Machine Learning with Apache Spark 勉強会資料
Deep Learning On Apache Spark
Deep Learning On Apache Spark
TripleOの光と闇
TripleOの光と闇
dstn交流会_DataSpider のソーシャルとの融合、手組との融合
dstn交流会_DataSpider のソーシャルとの融合、手組との融合
Spring “BigData”
Spring “BigData”
なにわテック20180127
なにわテック20180127
Prepare for Java 9 #jjug
Prepare for Java 9 #jjug
More from Takeshi Yamamuro
LT: Spark 3.1 Feature Expectation
LT: Spark 3.1 Feature Expectation
Takeshi Yamamuro
Apache Spark + Arrow
Apache Spark + Arrow
Takeshi Yamamuro
Quick Overview of Upcoming Spark 3.0 + α
Quick Overview of Upcoming Spark 3.0 + α
Takeshi Yamamuro
MLflowによる機械学習モデルのライフサイクルの管理
MLflowによる機械学習モデルのライフサイクルの管理
Takeshi Yamamuro
Taming Distributed/Parallel Query Execution Engine of Apache Spark
Taming Distributed/Parallel Query Execution Engine of Apache Spark
Takeshi Yamamuro
LLJVM: LLVM bitcode to JVM bytecode
LLJVM: LLVM bitcode to JVM bytecode
Takeshi Yamamuro
20180417 hivemall meetup#4
20180417 hivemall meetup#4
Takeshi Yamamuro
An Experimental Study of Bitmap Compression vs. Inverted List Compression
An Experimental Study of Bitmap Compression vs. Inverted List Compression
Takeshi Yamamuro
20160908 hivemall meetup
20160908 hivemall meetup
Takeshi Yamamuro
20150513 legobease
20150513 legobease
Takeshi Yamamuro
20150516 icde2015 r19-4
20150516 icde2015 r19-4
Takeshi Yamamuro
VLDB2013 R1 Emerging Hardware
VLDB2013 R1 Emerging Hardware
Takeshi Yamamuro
浮動小数点(IEEE754)を圧縮したい@dsirnlp#4
浮動小数点(IEEE754)を圧縮したい@dsirnlp#4
Takeshi Yamamuro
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
Takeshi Yamamuro
Introduction to Modern Analytical DB
Introduction to Modern Analytical DB
Takeshi Yamamuro
SIGMOD’12勉強会 -Session 7-
SIGMOD’12勉強会 -Session 7-
Takeshi Yamamuro
A x86-optimized rank&select dictionary for bit sequences
A x86-optimized rank&select dictionary for bit sequences
Takeshi Yamamuro
VAST-Tree, EDBT'12
VAST-Tree, EDBT'12
Takeshi Yamamuro
VLDB’11勉強会 -Session 9-
VLDB’11勉強会 -Session 9-
Takeshi Yamamuro
研究動向から考えるx86/x64最適化手法
研究動向から考えるx86/x64最適化手法
Takeshi Yamamuro
More from Takeshi Yamamuro
(20)
LT: Spark 3.1 Feature Expectation
LT: Spark 3.1 Feature Expectation
Apache Spark + Arrow
Apache Spark + Arrow
Quick Overview of Upcoming Spark 3.0 + α
Quick Overview of Upcoming Spark 3.0 + α
MLflowによる機械学習モデルのライフサイクルの管理
MLflowによる機械学習モデルのライフサイクルの管理
Taming Distributed/Parallel Query Execution Engine of Apache Spark
Taming Distributed/Parallel Query Execution Engine of Apache Spark
LLJVM: LLVM bitcode to JVM bytecode
LLJVM: LLVM bitcode to JVM bytecode
20180417 hivemall meetup#4
20180417 hivemall meetup#4
An Experimental Study of Bitmap Compression vs. Inverted List Compression
An Experimental Study of Bitmap Compression vs. Inverted List Compression
20160908 hivemall meetup
20160908 hivemall meetup
20150513 legobease
20150513 legobease
20150516 icde2015 r19-4
20150516 icde2015 r19-4
VLDB2013 R1 Emerging Hardware
VLDB2013 R1 Emerging Hardware
浮動小数点(IEEE754)を圧縮したい@dsirnlp#4
浮動小数点(IEEE754)を圧縮したい@dsirnlp#4
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
Introduction to Modern Analytical DB
Introduction to Modern Analytical DB
SIGMOD’12勉強会 -Session 7-
SIGMOD’12勉強会 -Session 7-
A x86-optimized rank&select dictionary for bit sequences
A x86-optimized rank&select dictionary for bit sequences
VAST-Tree, EDBT'12
VAST-Tree, EDBT'12
VLDB’11勉強会 -Session 9-
VLDB’11勉強会 -Session 9-
研究動向から考えるx86/x64最適化手法
研究動向から考えるx86/x64最適化手法
Sparkのクエリ処理系と周辺の話題
1.
Copyright©2016 NTT corp.
All Rights Reserved. 2016.12.22 Takeshi Yamamuro@ NTT SIC Sparkのクエリ処理理系と周辺の話題
2.
2Copyright©2016 NTT corp.
All Rights Reserved. ⾃自⼰己紹介
3.
3Copyright©2016 NTT corp.
All Rights Reserved. • MapReduceを⼀一般化した処理理モデルを基にした分散並 列列処理理のためのフレームワーク • DataFrame/Dataset API上に様々なワークロード向 けのライブラリを提供(Unified Engine) Sparkとは? (クエリ最適化を担当) (クエリ実行を担当)
4.
4Copyright©2016 NTT corp.
All Rights Reserved. • 不不変で並列列実⾏行行可能な分散コレクションで,Sparkにお ける唯⼀一のデータ操作のためのAPIを実装 Spark RDD -‐‑‒ Resilient Distributed Dataset val data = Array(1, 2, 3, 4, 5) // Scalaのローカルコレクション val dataRdd = sc.parallelize(data) // 分散コレクション(RDD)へ変換 val result = dataRdd.map(_ + 1) // RDDに対する操作を定義 .fiter( _ % 2 == 0) .reduce(_ + _)
5.
5Copyright©2016 NTT corp.
All Rights Reserved. • DataFrameはスキーマありの不不変な分散コレクション • 実際はDataFrame=Dataset[Row] Spark DataFrame/Dataset 引用: https://databricks.com/blog/ 2016/07/14/a-tale-of-three-apache- spark-apis-rdds-dataframes-and- datasets.html
6.
6Copyright©2016 NTT corp.
All Rights Reserved. Sparkの最近の基本⽅方針 引用: http://www.slideshare.net/databricks/structuring- spark-dataframes-datasets-and-streaming
7.
7Copyright©2016 NTT corp.
All Rights Reserved. Sparkの最近の基本⽅方針 引用: http://www.slideshare.net/databricks/structuring- spark-dataframes-datasets-and-streaming
8.
8Copyright©2016 NTT corp.
All Rights Reserved. Sparkの動作概要 • ユーザが記述したコードをDriver Programとして実 ⾏行行し、Sparkの最⼩小実⾏行行単位のTaskに分解し, Worker Node上に起動されたExecutorに割り当てる ことで分散並列列処理理を実現 引用: Cluster Overview, http://spark.apache.org/docs/2.0.0/cluster-overview.html
9.
9Copyright©2016 NTT corp.
All Rights Reserved. • 今年年の7⽉月末にv2.0が正式にリリース • v2.xのリリースはAPIの安定化を中⼼心に開発4ヶ⽉月+ QA1ヶ⽉月ペースを計画 • 今後開発が予定されている注⽬目機能はコストベース最適 化(w/Huawei)やCPU最適化など Sparkの過去のリリースと今後の⽅方向性 2012 2013 2014 2015 2016 2017 起源となる 論文(RDD)発表 Apache Incubator に登録 ApacheのTop-level プロジェクトに v1.0 v1.1 v1.2 v1.3 v1.4 v1.5 v1.6 v2.0 v2.1 v2.2 2016.12.22現在 未リリースv0.6 v0.7 v0.8 v0.9 DataFrame APIsの導入 限定的なコード生成の サポート Dataset APIsの導入 コード生成の 正式サポート
10.
10Copyright©2016 NTT corp.
All Rights Reserved. • Catalystが関係モデルに従ったルールベースの最適化 を⾏行行い実⾏行行プラン⽊木(実⾏行行計画)を構築、⽊木の中から コード⽣生成可能な部分⽊木をjavaのコードに変換&コン パイルしてから実⾏行行を開始 現在のSpark内部のクエリ処理理 Parser & Analyzer Optimizer Executor 結果 従来の(関係)データベースの クエリ処理 統計情報 入力データの分布を 近似したデータ SQL Join Scan Filter Scan Project 論理木 SortMergeJoin Filter Sort 実行プラン木Project カタログ データベースに関する メタデータ - DSLの構文チェック - カタログを用いた型や名前などのチェック - 経験則に基づいたルールベースの書き換え - プラン木の列挙(Joinの並び替えや実行アルゴリズム の列挙)とCPU/IOのコストを考慮した選択 - 行単位のIteratorを用いたインタープリタ方式 の処理(Volcano-style) Project IndexScan SeqScan
11.
11Copyright©2016 NTT corp.
All Rights Reserved. • Catalystが関係モデルに従ったルールベースの最適化 を⾏行行い実⾏行行プラン⽊木(実⾏行行計画)を構築、⽊木の中から コード⽣生成可能な部分⽊木をjavaのコードに変換&コン パイルしてから実⾏行行を開始 現在のSpark内部のクエリ処理理 Parser & Analyzer Optimizer(Catalyst) Executor(RDD) 結果 Sparkのクエリ処理 SQL/DataFrame/Dataset カタログ データベースに関する メタデータ - 経験則に基づいたルールベースの書き換え SortMergeJoin Filter Sort プラン木 Project Project IndexScan SeqScan Codegen GeneratedPlan GeneratedPlan GeneratedPlan 最終的な実行プラン木 - コード生成に対応した部分木を探索、等価な javaコードを生成、コンパイル - 行単位のIteratorを用いたインタープリタ方式 の処理(Volcano-style)
12.
12Copyright©2016 NTT corp.
All Rights Reserved. • 実⾏行行プラン⽊木の各ノードは、その⼦子ノードが返すレコー ドを処理理するIteratorとして表現 • 故に実⾏行行プラン⽊木はIteratorの連鎖と⾒見見なせる • 問題: 性能への⾼高いオーバヘッド • 繰り返しの仮想関数nextの呼び出し • コンパイラによる最適化の余地が限りなく少ない Volcano-‐‑‒styleの処理理と問題点 実行プラン木のFilterノードの実装例 next next next
13.
13Copyright©2016 NTT corp.
All Rights Reserved. 実⾏行行プラン⽊木のコード⽣生成の⽬目的 • 1. 仮想関数呼び出しの除去 • 2. 中間データがレジスタに残りやすい処理理 • 3. コンパイラによる最適化の享受 • Loop unrolling • データ並列列化(SIMD命令令の利利活⽤用)による⾼高速化 • 共通部分式除去など レジスタに残りやすく、データ並列化しやすそう コード生成
14.
14Copyright©2016 NTT corp.
All Rights Reserved. • SparkはProduce-‐‑‒Consumeモデル*1に基づいて実装 されたCode Templateベースのコード⽣生成 • コード⽣生成をサポートするプラン⽊木の各ノードにproduceと consumeのIFを実装することでコード⽣生成を実現 • SortやFilterは各ノードが持つCode Templateを⽤用いて、等 価な処理理をjavaのコード(⽂文字列列)として返却 • 部分⽊木から⽣生成されたjavaのコードを軽量量な組み込み コンパイラjanino*2を⽤用いてコンパイル • BufferedRowIteratorというIteratorと同様のIFを持つ抽象ク ラスを派⽣生してコードが⽣生成されるため、コンパイルしてイン スタンス化した後はIteratorとして扱う Sparkにおけるコード⽣生成の実装 *1 Neumann先生の“Efficiently compiling efficient query plans for modern hardware”の論文内で提案(2011) *2 http://janino-compiler.github.io/janino/
15.
15Copyright©2016 NTT corp.
All Rights Reserved. • コード⽣生成をサポートする実⾏行行プラン⽊木の各ノードに以 下を満たすproduceとconsumeを実装 • produce: ⼊入⼒力力レコード⽣生成を依頼(⼦子のproduceを呼ぶ), 部分⽊木の葉葉であれば親のconsumeに⽣生成したレコードを渡す • consume:受け取ったレコードに各ノードの処理理を適⽤用して, 親のconsumeに渡す Produce-‐‑‒Consumeモデル
16.
16Copyright©2016 NTT corp.
All Rights Reserved. Produce-‐‑‒Consumeモデル consume () コード生成フロー概要 consume () consume () produce() produce() produce() doCodeGen() γ π σ - γ.produce: γ.child.produce() - γ.consume: print “count += 1” - π.produce: π.child.produce() - π.consume: π.parent.consume() - σ.produce: σ.child.produce() - σ.consume: print “if (ss_item_sk == 1000) { ${σ.parent.consume()} }” - scan.produce: print “for (ss_item_sk in store_sales) { ${scan.parent.consume()} }”
17.
17Copyright©2016 NTT corp.
All Rights Reserved. • doCodeGen()を呼ぶと以下のコードブロックを⽣生成 Produce-‐‑‒Consumeモデル
18.
18Copyright©2016 NTT corp.
All Rights Reserved. • Sparkの実⾏行行プラン⽊木の各ノードはSparkPlanという 抽象クラスを派⽣生させて実装 • SparkPlanのexecute関数(前述のnext関数相当)の戻り値は RDD[InternalRow*1]で、RDDは各Workerノード上では Iteratorとして表現されている • コード⽣生成をサポートするノードはCodegenSupport というtrait*2をmixinする Sparkのコード⽣生成の実装概要 *1 レコードの内部表現 *2 ここではjava8のinterfaceに近い何かと思ってもらって良い trait CodegenSupport with SparkPlan { ... protected def doProduce(ctx: CodegenContext): String def doConsume(ctx: CodegenContext, input: Seq[ExprCode], row: ExprCode): String = { throw new UnsupportedOperationException } }
19.
19Copyright©2016 NTT corp.
All Rights Reserved. • コード⽣生成可能な部分⽊木を発⾒見見すると部分⽊木の最上位に WholeStageCodegenExec(とInputAdapter)と いうノードを挿⼊入、これが部分⽊木のコード⽣生成、コンパ イル、実⾏行行を仲介 Sparkのコード⽣生成の実装概要 WholeStageCodegenExec InputAdapter コード生成する部分木 生成されたコードと実行プランの間で 入力データを仲介するノード
20.
20Copyright©2016 NTT corp.
All Rights Reserved. • コード⽣生成可能な部分⽊木を発⾒見見すると部分⽊木の最上位に WholeStageCodegenExec(とInputAdapter)と いうノードを挿⼊入、これが部分⽊木のコード⽣生成、コンパ イル、実⾏行行を仲介 Sparkのコード⽣生成の実装概要 WholeStageCodegenExec InputAdapter コード生成する部分木 doCodeGen() produce() produce() produce() produce() consume() consume() consume() consume() class GeneratedIterator extends RowBufferedIteraotr { ... protected void processNext() throws IOException { ... } } 生成されたjavaのコード
21.
21Copyright©2016 NTT corp.
All Rights Reserved. • Sparkの⽣生成したコードを確認 • 各エントリの先頭にʼ’*ʼ’が付いている場合はコード⽣生成による最 適化が適⽤用されていることを⽰示している 具体例例)Sparkのコード⽣生成 scala> import org.apache.spark.sql.execution.debug._ scala> val df = sql("SELECT sqrt(a) FROM test WHERE b = 1”) scala> df.explain == Physical Plan == *Project [SQRT(cast(_1#2 as double)) AS SQRT(CAST(a AS DOUBLE))#18] +- *Filter (_2#3 = 1) +- LocalTableScan [_1#2, _2#3] scala> df.debugCodegen
22.
22Copyright©2016 NTT corp.
All Rights Reserved. Sparkが内部で生成したコード
23.
23Copyright©2016 NTT corp.
All Rights Reserved. • ノードを跨いだコード⽣生成の最適化が困難 • 例例えばAggregateノード→Joinノードという部分⽊木があった場 合に、JoinとAggregateを合成して最適なコードを⽣生成するこ とができれば冗⻑⾧長的な計算(実体化)を除去できる • メンテナンス性が低い • ⾔言わずもがな・・・ • 処理理系に含まれる他のデータ構造を含めたコード⽣生成 (⽊木構造やハッシュ表を含めた展開)が困難 • 現状のSparkでも、集約ノード⾃自体はコード⽣生成しているが集 約処理理に使うハッシュ表の操作はコード⽣生成できていない Code Templateベースのコード⽣生成の⾮非難
24.
24Copyright©2016 NTT corp.
All Rights Reserved. • ⾼高度度な組み込みコンパイラ基盤を活⽤用することでCode Templateベースのコード⽣生成での問題を解決 • Y. Klonatos et al., “Building Efficient Query Engines in a High-‐‑‒Level Language”, VLDB, 2014 • EPFL(スイス連邦⼯工科⼤大)とOracleの共同研究で、2014年年の VLDBのBest Paperの1つ • 実⾏行行プラン⽊木からコードを直接⽣生成するのではなく、よ り最適化できる中間表現を設計することで解決 • A. Shaikhha et al., “How to Architect a Query Compiler”, SIGMOD, 2016 • 上記のEPFLと同じ研究グループによる提案 コード⽣生成のNext Step – 研究動向 contʼ’d
25.
25Copyright©2016 NTT corp.
All Rights Reserved. • グラフ処理理、機械学習、SQLなどの異異なる処理理を統⼀一し て表現出来る中間表現を定め、ランタイム中に複数の異異 なる中間表現を結合&最適化して性能を改善 • S. Palkar et al., “Weld: A Common Runtime for High Performance Data Analytics”, CIDR, 2017 • AuthorのメンバにSpark RDDを提案したMatei⽒氏 コード⽣生成のNext Step – 研究動向
Download now