Deep Dive into Spark SQL with Advanced Performance Tuning

Takuya UESHIN
Takuya UESHINNautilus Technologies, Inc.
Deep Dive Into
Takuya UESHIN
Hadoop / Spark Conference 2019, Mar 2019
1
SQL
with Advanced Performance Tuning
2
About Me
- Software Engineer @databricks
- Apache Spark Committer
- Twitter: @ueshin
- GitHub: github.com/ueshin
DATABRICKS WORKSPACE
Databricks Delta ML Frameworks
DATABRICKS CLOUD SERVICE
DATABRICKS RUNTIME
Reliable & Scalable Simple & Integrated
Databricks Unified Analytics Platform
APIs
Jobs
Models
Notebooks
Dashboards End to end ML lifecycle
Spark SQL
A highly scalable and efficient relational
processing engine with ease-to-use APIs and
mid-query fault tolerance.
4
Run Everywhere
様々なデータソース
(Cassandra, Kafka,
RDBMSなど) や
ファイルフォーマット
(Parquet, ORC, CSV,
JSONなど) のデータを統
合して解析、処理
5
The not-so-secret truth...
6
is not only SQL.SQL
Spark SQL
7
Not Only SQL
Sparkアプリケーション、ライブラリもSpark SQLをベー
スにしている
• Structured streaming: ストリーム処理
• MLlib: 機械学習
• GraphFrame: グラフ計算
• Your own Spark applications: using SQL,
DataFrame and Dataset APIs
8
Lazy Evaluation
9
最適化、実行は できるだけ遅く
Spark SQLは関数やライブラリを横断して最適
化する
ライブラリやSQL/DataFrame/Dataset APIを
使ったクエリ全体を最適化
Spark SQL
10
A compiler from queries to RDDs.
Performance Tuning for Optimal Plans
Run EXPLAIN Plan.
Interpret Plan.
Tune Plan.
11
12
- Explain command/APIs
- Spark UI / Spark History
Server のSQLタブ
13
Job page の詳細情報
Declarative APIs
14
Declarative APIs
何をしたいのか?
• SQL API: ANSI SQL:2003 / HiveQL.
• Dataset/DataFrame APIs: richer,
user-friendly な language-integrated
インターフェイス
15
Declarative APIs
16
SQL, DataFrame, Datasetの違い
• DataFrame API は untyped リレーショナル処理
• Dataset API は typed バージョン, ただし処理内容によっては
パフォーマンスペナルティがある
[SPARK-14083]
• http://dbricks.co/29xYnqR
Metadata Catalog
17
Metadata Catalog
• Persistent Hive metastore [Hive 0.12 - Hive 2.3.3]
• Session-local temporary view manager
• Cross-session global temporary view manager
• Session-local function registry
18
Metadata Catalog
Session-local function registry
• Easy-to-use lambda UDF
• PySpark Python UDF / Pandas UDF
• Native UDAF インターフェイス
• Hive UDF, UDAF, UDTF サポート
• 約300 の built-in SQL functions
• including 30+ higher-order built-in functions
• Blog for higher-order functions: https://dbricks.co/2rR8vAr
19
Performance Tips - Catalog
Partition metadata 取得のコスト:
- Hive metastore のアップグレード
- Cardinality の高いパーティションカラムを避ける
- Partition pruning predicates (improved in [SPARK-20331])
20
Cache Manager
21
Cache Manager
• プランが一致した場合にキャッシュデータと置き
換える
• Cross-session
• 初めて利用する時にキャッシュデータ作成
• 依存しているtable/viewのデータが更新される
とキャッシュデータを無効化
22
Performance Tips - Cache
Cache: 必ずしも速いわけではない
- ディスクに書き出される場合がある
- 必要なければキャッシュしないようにする
23
Optimizer
24
Optimizer
heuristics と cost ベースでプランの書き換え
25
• Outer join elimination
• Constraint propagation
• Join reordering
and many more.
• Column pruning
• Predicate push down
• Constant folding
Performance Tips - Optimizer
独自の Optimizer や Planner Rule の組み込み
• SparkSessionExtensions
• ExperimentalMethodsクラス
• var extraOptimizations: Seq[Rule[LogicalPlan]] = Nil
• var extraStrategies: Seq[Strategy] = Nil
• Examples in the Herman’s talk Deep Dive into Catalyst
Optimizer
• Join two intervals: http://dbricks.co/2etjIDY
26
Planner
27
Planner
• Logical PlanをPhysical Planへ (what to how)
• コストに基づいて最適な Physical Plan を選択
28
table1 table2
Join
broadcast
hash join
sort merge
join
OR
broadcast join has lower cost if
one table can fit in memory
table1 table2 table1 table2
Performance Tips - Join Selection
29
table 1
table 2
join result
broadcast
broadcast join
table 1
table 2
shuffled
shuffled
join result
shuffle join
Performance Tips - Join Selection
broadcast join vs shuffle join (broadcast の方が速い)
• spark.sql.autoBroadcastJoinThreshold
• 統計情報を最新に保つ
• broadcastJoin ヒント
30
Performance Tips - Equal Join
… t1 JOIN t2 ON t1.id = t2.id AND t1.value < t2.value
… t1 JOIN t2 ON t1.value < t2.value
Join 条件に少なくとも1つの equal 条件を入れる
31
Performance Tips - Equal Join
… t1 JOIN t2 ON t1.id = t2.id AND t1.value < t2.value
… t1 JOIN t2 ON t1.value < t2.value
32
O(n ^ 2)
O(n)
Query Execution
33
Query Execution
• Memory Manager: メモリ利用状況を追跡してtaskや
operator間のメモリを調整
• Code Generator: Physical PlanをコンパイルしてJava
コードを生成
• Tungsten Engine: CPUやメモリに対して効率的なバイ
ナリデータフォーマットやデータ構造
34
Performance Tips - Memory Manager
spark.executor.memory と spark.memory.fraction を、監視外メ
モリのために余裕を持って設定する. Sparkが監視できないメモ
リ領域がある(netty buffer, parquet writer buffer).
spark.memory.offHeap.enabled と spark.memory.offHeap.size
を設定して off-heapを有効化, それにあわせて
spark.executor.memory を減らす.
35
Whole Stage Code Generation
Performance Tip - WholeStage codegen
spark.sql.codegen.hugeMethodLimit の設定
バイトコードのサイズが8kバイトを超える大きな
メソッドはJITコンパイラがコンパイルできない
37
Data Sources
• computation と storage の分離
• Complete data pipeline:
• External storage がデータを供給
• Spark が処理
• Sparkのデータ処理がとても速い場合、データ
ソースがボトルネックになり得る
38
Scan Vectorization
• Vectorizationでより効率的なカラムなデータ読み込み
• JVMがSIMDを利用しやすい
• ……
Partitioning and Bucketing
• data skipping と pre-shuffle のためのファイルレイアウト
• 不要なIOとシャッフルを避けてスピードアップ
• The summit talk: http://dbricks.co/2oG6ZBL
Performance Tips - DataSource
• vectorized reading が可能なファイルフォーマット
を利用 (Parquet, ORC)
• ファイルベースのデータソースの場合には、
Patitioning や Bucketing を検討
41
Apache Spark™
• Use Cases
• Research
• Technical Deep Dives
AI
• Productionizing ML
• Deep Learning
• Cloud Hardware
Fields
• Data Science
• Data Engineering
• Enterprise
5000+ ATTENDEES
Practitioners:
Data Scientists, Data Engineers,
Analysts, Architects
Leaders:
Engineering Management, VPs,
Heads of Analytics & Data, CxOs
TRACKS
databricks.com/sparkaisummit
43
Nike: Enabling Data Scientists to bring their Models to Market
Facebook: Vectorized Query Execution in Apache Spark at Facebook
Tencent: Large-scale Malicious Domain Detection with Spark AI
IBM: In-memory storage Evolution in Apache Spark
Capital One: Apache Spark and Sights at Speed: Streaming, Feature
management and Execution
Apple: Making Nested Columns as First Citizen in Apache Spark SQL
EBay: Managing Apache Spark workload and automatic optimizing.
Google: Validating Spark ML Jobs
HP: Apache Spark for Cyber Security in big company
Microsoft: Apache Spark Serving: Unifying Batch, Streaming and
RESTful Serving
ABSA Group: A Mainframe Data Source for Spark SQL and Streaming
Facebook: an efficient Facebook-scale shuffle service
IBM: Make your PySpark Data Fly with Arrow!
Facebook : Distributed Scheduling Framework for Apache Spark
Zynga: Automating Predictive Modeling at Zynga with PySpark
World Bank: Using Crowdsourced Images to Create Image Recognition
Models and NLP to Augment Global Trade indicator
JD.com: Optimizing Performance and Computing Resource.
Microsoft: Azure Databricks with R: Deep Dive
ICL: Cooperative Task Execution for Apache Spark
Airbnb: Apache Spark at Airbnb
Netflix: Migrating to Apache Spark at Netflix
Microsoft: Infrastructure for Deep Learning in
Apache Spark
Intel: Game playing using AI on Apache Spark
Facebook: Scaling Apache Spark @ Facebook
Lyft: Scaling Apache Spark on K8S at Lyft
Uber: Using Spark Mllib Models in a Production
Training and Serving Platform
Apple: Bridging the gap between Datasets and
DataFrames
Salesforce: The Rule of 10,000 Spark Jobs
Target: Lessons in Linear Algebra at Scale with
Apache Spark
Workday: Lesson Learned Using Apache Spark
Thank you
Takuya UESHIN (ueshin@databricks.com)
44
1 of 44

Recommended

Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~ by
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~NTT DATA OSS Professional Services
26K views43 slides
AWS で Presto を徹底的に使いこなすワザ by
AWS で Presto を徹底的に使いこなすワザAWS で Presto を徹底的に使いこなすワザ
AWS で Presto を徹底的に使いこなすワザNoritaka Sekiyama
1.3K views42 slides
S3 整合性モデルと Hadoop/Spark の話 by
S3 整合性モデルと Hadoop/Spark の話S3 整合性モデルと Hadoop/Spark の話
S3 整合性モデルと Hadoop/Spark の話Noritaka Sekiyama
3.2K views15 slides
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料) by
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)NTT DATA Technology & Innovation
1.1K views34 slides
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料) by
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)NTT DATA OSS Professional Services
53K views60 slides
マルチテナント化で知っておきたいデータベースのこと by
マルチテナント化で知っておきたいデータベースのことマルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことAmazon Web Services Japan
8.9K views55 slides

More Related Content

What's hot

MLOps入門 by
MLOps入門MLOps入門
MLOps入門Hiro Mura
2.1K views45 slides
大規模データ処理の定番OSS Hadoop / Spark 最新動向 - 2021秋 -(db tech showcase 2021 / ONLINE 発... by
大規模データ処理の定番OSS Hadoop / Spark 最新動向 - 2021秋 -(db tech showcase 2021 / ONLINE 発...大規模データ処理の定番OSS Hadoop / Spark 最新動向 - 2021秋 -(db tech showcase 2021 / ONLINE 発...
大規模データ処理の定番OSS Hadoop / Spark 最新動向 - 2021秋 -(db tech showcase 2021 / ONLINE 発...NTT DATA Technology & Innovation
836 views55 slides
AWSではじめるMLOps by
AWSではじめるMLOpsAWSではじめるMLOps
AWSではじめるMLOpsMariOhbuchi
3.2K views50 slides
NTTデータが考えるデータ基盤の次の一手 ~AI活用のために知っておくべき新潮流とは?~(NTTデータ テクノロジーカンファレンス 2020 発表資料) by
NTTデータが考えるデータ基盤の次の一手 ~AI活用のために知っておくべき新潮流とは?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)NTTデータが考えるデータ基盤の次の一手 ~AI活用のために知っておくべき新潮流とは?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
NTTデータが考えるデータ基盤の次の一手 ~AI活用のために知っておくべき新潮流とは?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)NTT DATA Technology & Innovation
494 views41 slides
Apache Hadoop YARNとマルチテナントにおけるリソース管理 by
Apache Hadoop YARNとマルチテナントにおけるリソース管理Apache Hadoop YARNとマルチテナントにおけるリソース管理
Apache Hadoop YARNとマルチテナントにおけるリソース管理Cloudera Japan
11.7K views65 slides
AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce by
AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduceAWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce
AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduceAmazon Web Services Japan
102.4K views84 slides

What's hot(20)

MLOps入門 by Hiro Mura
MLOps入門MLOps入門
MLOps入門
Hiro Mura2.1K views
大規模データ処理の定番OSS Hadoop / Spark 最新動向 - 2021秋 -(db tech showcase 2021 / ONLINE 発... by NTT DATA Technology & Innovation
大規模データ処理の定番OSS Hadoop / Spark 最新動向 - 2021秋 -(db tech showcase 2021 / ONLINE 発...大規模データ処理の定番OSS Hadoop / Spark 最新動向 - 2021秋 -(db tech showcase 2021 / ONLINE 発...
大規模データ処理の定番OSS Hadoop / Spark 最新動向 - 2021秋 -(db tech showcase 2021 / ONLINE 発...
AWSではじめるMLOps by MariOhbuchi
AWSではじめるMLOpsAWSではじめるMLOps
AWSではじめるMLOps
MariOhbuchi3.2K views
NTTデータが考えるデータ基盤の次の一手 ~AI活用のために知っておくべき新潮流とは?~(NTTデータ テクノロジーカンファレンス 2020 発表資料) by NTT DATA Technology & Innovation
NTTデータが考えるデータ基盤の次の一手 ~AI活用のために知っておくべき新潮流とは?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)NTTデータが考えるデータ基盤の次の一手 ~AI活用のために知っておくべき新潮流とは?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
NTTデータが考えるデータ基盤の次の一手 ~AI活用のために知っておくべき新潮流とは?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
Apache Hadoop YARNとマルチテナントにおけるリソース管理 by Cloudera Japan
Apache Hadoop YARNとマルチテナントにおけるリソース管理Apache Hadoop YARNとマルチテナントにおけるリソース管理
Apache Hadoop YARNとマルチテナントにおけるリソース管理
Cloudera Japan11.7K views
AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce by Amazon Web Services Japan
AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduceAWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce
AWS Black Belt Tech シリーズ 2015 - Amazon Elastic MapReduce
大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05) by NTT DATA Technology & Innovation
大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
IoT時代におけるストリームデータ処理と急成長の Apache Flink by Takanori Suzuki
IoT時代におけるストリームデータ処理と急成長の Apache FlinkIoT時代におけるストリームデータ処理と急成長の Apache Flink
IoT時代におけるストリームデータ処理と急成長の Apache Flink
Takanori Suzuki28K views
リクルートのビッグデータ活用基盤とビッグデータ活用のためのメタデータ管理Webのご紹介 by Recruit Technologies
リクルートのビッグデータ活用基盤とビッグデータ活用のためのメタデータ管理Webのご紹介リクルートのビッグデータ活用基盤とビッグデータ活用のためのメタデータ管理Webのご紹介
リクルートのビッグデータ活用基盤とビッグデータ活用のためのメタデータ管理Webのご紹介
RDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけ by Recruit Technologies
RDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけRDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけ
RDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけ
Recruit Technologies59.8K views
ビッグデータ処理データベースの全体像と使い分け
2018年version by Tetsutaro Watanabe
ビッグデータ処理データベースの全体像と使い分け
2018年versionビッグデータ処理データベースの全体像と使い分け
2018年version
ビッグデータ処理データベースの全体像と使い分け
2018年version
Tetsutaro Watanabe21.2K views
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜 by Takahiro Inoue
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
Takahiro Inoue49K views
ストリーム処理を支えるキューイングシステムの選び方 by Yoshiyasu SAEKI
ストリーム処理を支えるキューイングシステムの選び方ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方
Yoshiyasu SAEKI40.2K views
なぜ「マイクロサービス“化”」が必要なのか by Yusuke Suzuki
なぜ「マイクロサービス“化”」が必要なのかなぜ「マイクロサービス“化”」が必要なのか
なぜ「マイクロサービス“化”」が必要なのか
Yusuke Suzuki28K views
爆速クエリエンジン”Presto”を使いたくなる話 by Kentaro Yoshida
爆速クエリエンジン”Presto”を使いたくなる話爆速クエリエンジン”Presto”を使いたくなる話
爆速クエリエンジン”Presto”を使いたくなる話
Kentaro Yoshida27.5K views

Similar to Deep Dive into Spark SQL with Advanced Performance Tuning

2019.03.19 Deep Dive into Spark SQL with Advanced Performance Tuning by
2019.03.19 Deep Dive into Spark SQL with Advanced Performance Tuning2019.03.19 Deep Dive into Spark SQL with Advanced Performance Tuning
2019.03.19 Deep Dive into Spark SQL with Advanced Performance TuningTakuya UESHIN
1.2K views36 slides
Spark Summit 2014 の報告と最近の取り組みについて by
Spark Summit 2014 の報告と最近の取り組みについてSpark Summit 2014 の報告と最近の取り組みについて
Spark Summit 2014 の報告と最近の取り組みについてRecruit Technologies
2.7K views38 slides
Developers.IO 2019 Effective Datalake by
Developers.IO 2019 Effective DatalakeDevelopers.IO 2019 Effective Datalake
Developers.IO 2019 Effective DatalakeSatoru Ishikawa
2.4K views84 slides
データ分析に必要なスキルをつけるためのツール~Jupyter notebook、r連携、機械学習からsparkまで~ by
データ分析に必要なスキルをつけるためのツール~Jupyter notebook、r連携、機械学習からsparkまで~データ分析に必要なスキルをつけるためのツール~Jupyter notebook、r連携、機械学習からsparkまで~
データ分析に必要なスキルをつけるためのツール~Jupyter notebook、r連携、機械学習からsparkまで~The Japan DataScientist Society
8.3K views93 slides
Presto As A Service - Treasure DataでのPresto運用事例 by
Presto As A Service - Treasure DataでのPresto運用事例Presto As A Service - Treasure DataでのPresto運用事例
Presto As A Service - Treasure DataでのPresto運用事例Taro L. Saito
9.9K views64 slides
15.05.21_ビッグデータ分析基盤Sparkの最新動向とその活用-Spark SUMMIT EAST 2015- by
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.
1.3K views35 slides

Similar to Deep Dive into Spark SQL with Advanced Performance Tuning(20)

2019.03.19 Deep Dive into Spark SQL with Advanced Performance Tuning by Takuya UESHIN
2019.03.19 Deep Dive into Spark SQL with Advanced Performance Tuning2019.03.19 Deep Dive into Spark SQL with Advanced Performance Tuning
2019.03.19 Deep Dive into Spark SQL with Advanced Performance Tuning
Takuya UESHIN1.2K views
Spark Summit 2014 の報告と最近の取り組みについて by Recruit Technologies
Spark Summit 2014 の報告と最近の取り組みについてSpark Summit 2014 の報告と最近の取り組みについて
Spark Summit 2014 の報告と最近の取り組みについて
Developers.IO 2019 Effective Datalake by Satoru Ishikawa
Developers.IO 2019 Effective DatalakeDevelopers.IO 2019 Effective Datalake
Developers.IO 2019 Effective Datalake
Satoru Ishikawa2.4K views
データ分析に必要なスキルをつけるためのツール~Jupyter notebook、r連携、機械学習からsparkまで~ by The Japan DataScientist Society
データ分析に必要なスキルをつけるためのツール~Jupyter notebook、r連携、機械学習からsparkまで~データ分析に必要なスキルをつけるためのツール~Jupyter notebook、r連携、機械学習からsparkまで~
データ分析に必要なスキルをつけるためのツール~Jupyter notebook、r連携、機械学習からsparkまで~
Presto As A Service - Treasure DataでのPresto運用事例 by Taro L. Saito
Presto As A Service - Treasure DataでのPresto運用事例Presto As A Service - Treasure DataでのPresto運用事例
Presto As A Service - Treasure DataでのPresto運用事例
Taro L. Saito9.9K views
15.05.21_ビッグデータ分析基盤Sparkの最新動向とその活用-Spark SUMMIT EAST 2015- by LINE Corp.
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.1.3K views
Qlik TECH TALK 20210706 SAPデータ分析を加速するQlikのアクセレレーターパッケージご紹介 by QlikPresalesJapan
Qlik TECH TALK 20210706 SAPデータ分析を加速するQlikのアクセレレーターパッケージご紹介Qlik TECH TALK 20210706 SAPデータ分析を加速するQlikのアクセレレーターパッケージご紹介
Qlik TECH TALK 20210706 SAPデータ分析を加速するQlikのアクセレレーターパッケージご紹介
QlikPresalesJapan3.5K views
Synapse lakedatabase by Ryoma Nagata
Synapse lakedatabaseSynapse lakedatabase
Synapse lakedatabase
Ryoma Nagata464 views
[Oracle big data jam session #1] Apache Spark ことはじめ by Kenichi Sonoda
[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 Sonoda176 views
クラウド運用のためのストリームマイニング by Shin Matsumoto
クラウド運用のためのストリームマイニングクラウド運用のためのストリームマイニング
クラウド運用のためのストリームマイニング
Shin Matsumoto687 views
大量のデータ処理や分析に使えるOSS Apache Spark入門(Open Source Conference 2021 Online/Kyoto 発表資料) by NTT DATA Technology & Innovation
大量のデータ処理や分析に使える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 発表資料)
Data Scientist Workbench - dots0729 by s. kaijima
Data Scientist Workbench - dots0729Data Scientist Workbench - dots0729
Data Scientist Workbench - dots0729
s. kaijima1.8K views
Microsoft Azureのビッグデータ基盤とAIテクノロジーを活用しよう by Hideo Takagi
Microsoft Azureのビッグデータ基盤とAIテクノロジーを活用しようMicrosoft Azureのビッグデータ基盤とAIテクノロジーを活用しよう
Microsoft Azureのビッグデータ基盤とAIテクノロジーを活用しよう
Hideo Takagi844 views
20161027 hadoop summit Generating Recommendations at Amazon Scale with Apach... by Amazon Web Services Japan
20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apach...20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apach...
20161027 hadoop summit Generating Recommendations at Amazon Scale with Apach...
SQL Server 使いのための Azure Synapse Analytics - Spark 入門 by Daiyu Hatakeyama
SQL Server 使いのための Azure Synapse Analytics - Spark 入門SQL Server 使いのための Azure Synapse Analytics - Spark 入門
SQL Server 使いのための Azure Synapse Analytics - Spark 入門
Daiyu Hatakeyama1.3K views
M06_DX を担うエンジニア向け Data & AI Analytics プラットフォームの最適解 ~ Azure Synapse 最新機能ご紹介 ~ ... by 日本マイクロソフト株式会社
M06_DX を担うエンジニア向け Data & AI Analytics プラットフォームの最適解 ~ Azure Synapse 最新機能ご紹介 ~ ...M06_DX を担うエンジニア向け Data & AI Analytics プラットフォームの最適解 ~ Azure Synapse 最新機能ご紹介 ~ ...
M06_DX を担うエンジニア向け Data & AI Analytics プラットフォームの最適解 ~ Azure Synapse 最新機能ご紹介 ~ ...
PySpark Intro Part.2 with SQL Graph by Oshitari_kochi
PySpark Intro Part.2 with SQL GraphPySpark Intro Part.2 with SQL Graph
PySpark Intro Part.2 with SQL Graph
Oshitari_kochi266 views

More from Takuya UESHIN

Introducing Koalas 1.0 (and 1.1) by
Introducing Koalas 1.0 (and 1.1)Introducing Koalas 1.0 (and 1.1)
Introducing Koalas 1.0 (and 1.1)Takuya UESHIN
982 views19 slides
Koalas: Unifying Spark and pandas APIs by
Koalas: Unifying Spark and pandas APIsKoalas: Unifying Spark and pandas APIs
Koalas: Unifying Spark and pandas APIsTakuya UESHIN
1.8K views23 slides
Koalas: Unifying Spark and pandas APIs by
Koalas: Unifying Spark and pandas APIsKoalas: Unifying Spark and pandas APIs
Koalas: Unifying Spark and pandas APIsTakuya UESHIN
1.9K views16 slides
An Insider’s Guide to Maximizing Spark SQL Performance by
 An Insider’s Guide to Maximizing Spark SQL Performance An Insider’s Guide to Maximizing Spark SQL Performance
An Insider’s Guide to Maximizing Spark SQL PerformanceTakuya UESHIN
6.1K views43 slides
Apache Arrow and Pandas UDF on Apache Spark by
Apache Arrow and Pandas UDF on Apache SparkApache Arrow and Pandas UDF on Apache Spark
Apache Arrow and Pandas UDF on Apache SparkTakuya UESHIN
3.9K views34 slides
Failing gracefully by
Failing gracefullyFailing gracefully
Failing gracefullyTakuya UESHIN
3.3K views49 slides

More from Takuya UESHIN(10)

Introducing Koalas 1.0 (and 1.1) by Takuya UESHIN
Introducing Koalas 1.0 (and 1.1)Introducing Koalas 1.0 (and 1.1)
Introducing Koalas 1.0 (and 1.1)
Takuya UESHIN982 views
Koalas: Unifying Spark and pandas APIs by Takuya UESHIN
Koalas: Unifying Spark and pandas APIsKoalas: Unifying Spark and pandas APIs
Koalas: Unifying Spark and pandas APIs
Takuya UESHIN1.8K views
Koalas: Unifying Spark and pandas APIs by Takuya UESHIN
Koalas: Unifying Spark and pandas APIsKoalas: Unifying Spark and pandas APIs
Koalas: Unifying Spark and pandas APIs
Takuya UESHIN1.9K views
An Insider’s Guide to Maximizing Spark SQL Performance by Takuya UESHIN
 An Insider’s Guide to Maximizing Spark SQL Performance An Insider’s Guide to Maximizing Spark SQL Performance
An Insider’s Guide to Maximizing Spark SQL Performance
Takuya UESHIN6.1K views
Apache Arrow and Pandas UDF on Apache Spark by Takuya UESHIN
Apache Arrow and Pandas UDF on Apache SparkApache Arrow and Pandas UDF on Apache Spark
Apache Arrow and Pandas UDF on Apache Spark
Takuya UESHIN3.9K views
20140908 spark sql & catalyst by Takuya UESHIN
20140908 spark sql & catalyst20140908 spark sql & catalyst
20140908 spark sql & catalyst
Takuya UESHIN8.8K views
Introduction to Spark SQL & Catalyst by Takuya UESHIN
Introduction to Spark SQL & CatalystIntroduction to Spark SQL & Catalyst
Introduction to Spark SQL & Catalyst
Takuya UESHIN1.6K views
20110616 HBase勉強会(第二回) by Takuya UESHIN
20110616 HBase勉強会(第二回)20110616 HBase勉強会(第二回)
20110616 HBase勉強会(第二回)
Takuya UESHIN780 views
20100724 HBaseプログラミング by Takuya UESHIN
20100724 HBaseプログラミング20100724 HBaseプログラミング
20100724 HBaseプログラミング
Takuya UESHIN1K views

Deep Dive into Spark SQL with Advanced Performance Tuning

  • 1. Deep Dive Into Takuya UESHIN Hadoop / Spark Conference 2019, Mar 2019 1 SQL with Advanced Performance Tuning
  • 2. 2 About Me - Software Engineer @databricks - Apache Spark Committer - Twitter: @ueshin - GitHub: github.com/ueshin
  • 3. DATABRICKS WORKSPACE Databricks Delta ML Frameworks DATABRICKS CLOUD SERVICE DATABRICKS RUNTIME Reliable & Scalable Simple & Integrated Databricks Unified Analytics Platform APIs Jobs Models Notebooks Dashboards End to end ML lifecycle
  • 4. Spark SQL A highly scalable and efficient relational processing engine with ease-to-use APIs and mid-query fault tolerance. 4
  • 5. Run Everywhere 様々なデータソース (Cassandra, Kafka, RDBMSなど) や ファイルフォーマット (Parquet, ORC, CSV, JSONなど) のデータを統 合して解析、処理 5
  • 8. Not Only SQL Sparkアプリケーション、ライブラリもSpark SQLをベー スにしている • Structured streaming: ストリーム処理 • MLlib: 機械学習 • GraphFrame: グラフ計算 • Your own Spark applications: using SQL, DataFrame and Dataset APIs 8
  • 9. Lazy Evaluation 9 最適化、実行は できるだけ遅く Spark SQLは関数やライブラリを横断して最適 化する ライブラリやSQL/DataFrame/Dataset APIを 使ったクエリ全体を最適化
  • 10. Spark SQL 10 A compiler from queries to RDDs.
  • 11. Performance Tuning for Optimal Plans Run EXPLAIN Plan. Interpret Plan. Tune Plan. 11
  • 12. 12 - Explain command/APIs - Spark UI / Spark History Server のSQLタブ
  • 15. Declarative APIs 何をしたいのか? • SQL API: ANSI SQL:2003 / HiveQL. • Dataset/DataFrame APIs: richer, user-friendly な language-integrated インターフェイス 15
  • 16. Declarative APIs 16 SQL, DataFrame, Datasetの違い • DataFrame API は untyped リレーショナル処理 • Dataset API は typed バージョン, ただし処理内容によっては パフォーマンスペナルティがある [SPARK-14083] • http://dbricks.co/29xYnqR
  • 18. Metadata Catalog • Persistent Hive metastore [Hive 0.12 - Hive 2.3.3] • Session-local temporary view manager • Cross-session global temporary view manager • Session-local function registry 18
  • 19. Metadata Catalog Session-local function registry • Easy-to-use lambda UDF • PySpark Python UDF / Pandas UDF • Native UDAF インターフェイス • Hive UDF, UDAF, UDTF サポート • 約300 の built-in SQL functions • including 30+ higher-order built-in functions • Blog for higher-order functions: https://dbricks.co/2rR8vAr 19
  • 20. Performance Tips - Catalog Partition metadata 取得のコスト: - Hive metastore のアップグレード - Cardinality の高いパーティションカラムを避ける - Partition pruning predicates (improved in [SPARK-20331]) 20
  • 22. Cache Manager • プランが一致した場合にキャッシュデータと置き 換える • Cross-session • 初めて利用する時にキャッシュデータ作成 • 依存しているtable/viewのデータが更新される とキャッシュデータを無効化 22
  • 23. Performance Tips - Cache Cache: 必ずしも速いわけではない - ディスクに書き出される場合がある - 必要なければキャッシュしないようにする 23
  • 25. Optimizer heuristics と cost ベースでプランの書き換え 25 • Outer join elimination • Constraint propagation • Join reordering and many more. • Column pruning • Predicate push down • Constant folding
  • 26. Performance Tips - Optimizer 独自の Optimizer や Planner Rule の組み込み • SparkSessionExtensions • ExperimentalMethodsクラス • var extraOptimizations: Seq[Rule[LogicalPlan]] = Nil • var extraStrategies: Seq[Strategy] = Nil • Examples in the Herman’s talk Deep Dive into Catalyst Optimizer • Join two intervals: http://dbricks.co/2etjIDY 26
  • 28. Planner • Logical PlanをPhysical Planへ (what to how) • コストに基づいて最適な Physical Plan を選択 28 table1 table2 Join broadcast hash join sort merge join OR broadcast join has lower cost if one table can fit in memory table1 table2 table1 table2
  • 29. Performance Tips - Join Selection 29 table 1 table 2 join result broadcast broadcast join table 1 table 2 shuffled shuffled join result shuffle join
  • 30. Performance Tips - Join Selection broadcast join vs shuffle join (broadcast の方が速い) • spark.sql.autoBroadcastJoinThreshold • 統計情報を最新に保つ • broadcastJoin ヒント 30
  • 31. Performance Tips - Equal Join … t1 JOIN t2 ON t1.id = t2.id AND t1.value < t2.value … t1 JOIN t2 ON t1.value < t2.value Join 条件に少なくとも1つの equal 条件を入れる 31
  • 32. Performance Tips - Equal Join … t1 JOIN t2 ON t1.id = t2.id AND t1.value < t2.value … t1 JOIN t2 ON t1.value < t2.value 32 O(n ^ 2) O(n)
  • 34. Query Execution • Memory Manager: メモリ利用状況を追跡してtaskや operator間のメモリを調整 • Code Generator: Physical PlanをコンパイルしてJava コードを生成 • Tungsten Engine: CPUやメモリに対して効率的なバイ ナリデータフォーマットやデータ構造 34
  • 35. Performance Tips - Memory Manager spark.executor.memory と spark.memory.fraction を、監視外メ モリのために余裕を持って設定する. Sparkが監視できないメモ リ領域がある(netty buffer, parquet writer buffer). spark.memory.offHeap.enabled と spark.memory.offHeap.size を設定して off-heapを有効化, それにあわせて spark.executor.memory を減らす. 35
  • 36. Whole Stage Code Generation
  • 37. Performance Tip - WholeStage codegen spark.sql.codegen.hugeMethodLimit の設定 バイトコードのサイズが8kバイトを超える大きな メソッドはJITコンパイラがコンパイルできない 37
  • 38. Data Sources • computation と storage の分離 • Complete data pipeline: • External storage がデータを供給 • Spark が処理 • Sparkのデータ処理がとても速い場合、データ ソースがボトルネックになり得る 38
  • 40. Partitioning and Bucketing • data skipping と pre-shuffle のためのファイルレイアウト • 不要なIOとシャッフルを避けてスピードアップ • The summit talk: http://dbricks.co/2oG6ZBL
  • 41. Performance Tips - DataSource • vectorized reading が可能なファイルフォーマット を利用 (Parquet, ORC) • ファイルベースのデータソースの場合には、 Patitioning や Bucketing を検討 41
  • 42. Apache Spark™ • Use Cases • Research • Technical Deep Dives AI • Productionizing ML • Deep Learning • Cloud Hardware Fields • Data Science • Data Engineering • Enterprise 5000+ ATTENDEES Practitioners: Data Scientists, Data Engineers, Analysts, Architects Leaders: Engineering Management, VPs, Heads of Analytics & Data, CxOs TRACKS databricks.com/sparkaisummit
  • 43. 43 Nike: Enabling Data Scientists to bring their Models to Market Facebook: Vectorized Query Execution in Apache Spark at Facebook Tencent: Large-scale Malicious Domain Detection with Spark AI IBM: In-memory storage Evolution in Apache Spark Capital One: Apache Spark and Sights at Speed: Streaming, Feature management and Execution Apple: Making Nested Columns as First Citizen in Apache Spark SQL EBay: Managing Apache Spark workload and automatic optimizing. Google: Validating Spark ML Jobs HP: Apache Spark for Cyber Security in big company Microsoft: Apache Spark Serving: Unifying Batch, Streaming and RESTful Serving ABSA Group: A Mainframe Data Source for Spark SQL and Streaming Facebook: an efficient Facebook-scale shuffle service IBM: Make your PySpark Data Fly with Arrow! Facebook : Distributed Scheduling Framework for Apache Spark Zynga: Automating Predictive Modeling at Zynga with PySpark World Bank: Using Crowdsourced Images to Create Image Recognition Models and NLP to Augment Global Trade indicator JD.com: Optimizing Performance and Computing Resource. Microsoft: Azure Databricks with R: Deep Dive ICL: Cooperative Task Execution for Apache Spark Airbnb: Apache Spark at Airbnb Netflix: Migrating to Apache Spark at Netflix Microsoft: Infrastructure for Deep Learning in Apache Spark Intel: Game playing using AI on Apache Spark Facebook: Scaling Apache Spark @ Facebook Lyft: Scaling Apache Spark on K8S at Lyft Uber: Using Spark Mllib Models in a Production Training and Serving Platform Apple: Bridging the gap between Datasets and DataFrames Salesforce: The Rule of 10,000 Spark Jobs Target: Lessons in Linear Algebra at Scale with Apache Spark Workday: Lesson Learned Using Apache Spark
  • 44. Thank you Takuya UESHIN (ueshin@databricks.com) 44