基於成本的Spark SQL優化器框架 [session]
Strata Data Conference早期門票優惠6月9日截止!點選閱讀原文可登入會議網站,儘快報名以確定留位!
基於成本的Spark SQL優化器框架
講師:Ron Hu (Huawei Technologies), 王振華 (Huawei Technologies)
14:00–14:40 Friday, 2017-07-14
Spark及更多發展 (Spark & beyond)
地點: 紫金大廳B(Grand Hall B)
觀眾水平: 中級 (Intermediate)
必要預備知識
SQL, Apache Spark, 資料庫。
您將學到什麼
優化器有架構上的改變,和對效能的影響。
描述
在Spark SQL的Catalyst優化器中,許多基於規則的優化技術已經實現,但優化器本身仍然有很大的改進空間。例如,沒有關於資料分佈的詳細列統計資訊,因此難以精確地估計過濾(filter)、連線(join)等資料庫操作符的輸出大小和基數 (cardinality)。由於不準確的估計,它經常導致優化器產生次優的查詢執行計劃。
我們在Spark SQL引擎內新增了一個基於成本的優化器框架。在我們的框架中,我們使用analyze table SQL語句收集表和列統計資訊,並將它們儲存到metastore中。對於列的統計資訊,我們收集不同值的數量(number of distinct value),空值的數量,最大/最小值,平均/最大列長度等等。此外,我們儲存等高直方圖以更好地描述列的資料分佈,從而有效地處理資料傾斜。此外,使用列的不同值的數量和表的行數量,我們可以確定列的唯一性,儘管Spark SQL不支援主鍵。這有助於確定例如 join 聯接操作和多列 group by 分組操作的輸出大小。
我們已把這個基於成本的優化器框架貢獻給社群版本Spark 2.2。在我們的框架中,我們計算每個資料庫操作符的基數和輸出大小。通過可靠的統計和精確的估算,我們能夠在這些領域做出好的決定:選擇雜湊連線(hash join)操作的正確構建端(build side),選擇正確的連線演算法(如broadcast hash join與 shuffled hash join), 調整連線的順序等等。在這次演講中,我們將展示Spark SQL的新的基於成本的優化器框架及其對TPC-DS查詢的效能影響。
講師介紹:
Ron Hu (Huawei Technologies)
Ron-Chung Hu is a database system architect at Huawei Technologies, where he works on building a big data analytics platform based on Apache Spark. Previously, he worked at Teradata, Sybase, and MarkLogic, focusing on parallel database systems and search engines. Ron holds a PhD in computer science from the University of California, Los Angeles.
王振華 (Huawei Technologies)
王振華 (Zhenhua Wang) is a research engineer at Huawei Technologies, where he works on building a big data analytics platform based on Apache Spark. He holds a PhD in computer science from Zhejiang University. His research interests include information retrieval and web data mining.
相關文章
- Spark SQL 效能優化再進一步 CBO 基於代價的優化SparkSQL優化
- 袋鼠雲數棧基於CBO在Spark SQL優化上的探索SparkSQL優化
- 基於成本的優化器 — 一般錯誤概念和問題(轉)優化
- 對一條基於分割槽的簡單SQL的優化SQL優化
- 關於SQL優化的闢謠SQL優化
- Spark3學習【基於Java】3. Spark-Sql常用APISparkJavaSQLAPI
- 基於mysql資料庫 關於sql優化的一些問題MySql資料庫優化
- 關於SQL優化的小知識SQL優化
- soar-PHP - SQL 語句優化器和重寫器的 PHP 擴充套件包、 方便框架中 SQL 語句調優PHPSQL優化套件框架
- Spark效能優化Spark優化
- hive、spark優化HiveSpark優化
- Spark Streaming + Spark SQL 實現配置化ETSparkSQL
- SQL優化器探討(zt)SQL優化
- 前端基於瀏覽器儲存的AJAX效能優化前端瀏覽器優化
- Spark SQL:4.對Spark SQL的理解SparkSQL
- spark效能優化(一)Spark優化
- 深入瞭解 TiDB SQL 優化器TiDBSQL優化
- 基於案例學SQL優化-全套視訊教程免費下載SQL優化
- 基於機器學習預測Airbnb的城市旅行成本機器學習AI
- Spark效能優化:優化資料結構Spark優化資料結構
- 基於 PageSpeed 的效能優化實踐優化
- 基於Selenium + Python的web自動化框架PythonWeb框架
- Spark(十三) Spark效能調優之RDD持久化Spark持久化
- 基於化學環境的多相催化吸附機器學習框架機器學習框架
- mysql優化篇(基於索引)MySql優化索引
- 測量、基線和效能優化之三:基於測量、基線和變化的效能優化優化
- SQL優化的方法論SQL優化
- Spark系列 - (3) Spark SQLSparkSQL
- 基於XDanmuku的Android效能優化實戰Android優化
- Curve 基於 Raft 的寫時延優化Raft優化
- Spark 3.x Spark Core詳解 & 效能優化Spark優化
- sql優化之邏輯優化SQL優化
- 資料庫優化 - SQL優化資料庫優化SQL
- 測量、基線和效能優化之三:基於測量、基線和變化的效能優化v優化
- SQL SERVER優化SQLServer優化
- SQL優化指南SQL優化
- spark效能優化幾點注意Spark優化
- 基於 Spark 的資料分析實踐Spark
- 基於Apache Spark以BigDL搭建可擴充套件的分散式深度學習框架ApacheSpark套件分散式深度學習框架