欧美日韩调教_欧美精品啪啪_欧美精品97_国产女主播一区二区_欧美精品播放_亚洲精品乱码久久久久久蜜桃91_中文欧美日韩_夜夜爽www精品_国产亚洲亚洲_国产欧美日韩亚洲

千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > 大數據實時計算引擎Spark筆試題:Spark Catalyst查詢優化器原理

大數據實時計算引擎Spark筆試題:Spark Catalyst查詢優化器原理

來源:千鋒教育
發布人:小千
時間: 2021-01-27 09:21:00 1611710460

      小千今天分享的這篇spark筆試題是sparkSQL的優化器catalyst,本質上它就是一個SQL查詢的優化器,大家了解了它之后基本就能了解其他的SQL處理引擎的優化原理了。

      *SQL優化器核心執行策略主要分為兩個大的方向:基于規則優化(RBO)以及基于代價優化(CBO),基于規則優化是一種經驗式、啟發式地優化思路,更多地依靠前輩總結出來的優化規則,簡單易行且能夠覆蓋到大部分優化邏輯,但是對于核心優化算子Join卻顯得有點力不從心。舉個簡單的例子,兩個表執行Join到底應該使用BroadcastHashJoin 還是SortMergeJoin?當前SparkSQL的方式是通過手工設定參數來確定,如果一個表的數據量小于這個值就使用BroadcastHashJoin,但是這種方案顯得很不優雅,很不靈活。基于代價優化就是為了解決這類問題,它會針對每個Join評估當前兩張表使用每種Join策略的代價,根據代價估算確定一種代價最小的方案。

      *我們這里主要說明基于規則的優化,略提一下CBO

1

      如上圖是一個SQL經過優化器的最終生成物理查詢計劃的留存,紅色部分是我們要重點說明的內容。大 家思考我們寫的一個SQL最終如何在Spark引擎中轉換成具體的代碼執行的。任何一個優化器工作原理都大同小異:SQL語句首先通過Parser模塊被解析為語法樹,此棵樹稱為Unresolved Logical Plan; Unresolved Logical Plan通過Analyzer模塊借助于數據元數據解析為Logical Plan;此時再通過各種基于規則的優化策略進行深入優化,得到Optimized Logical Plan;優化后的邏輯執行計劃依然是邏輯的,并不能被Spark系統理解,此時需要將此邏輯執行計劃轉換為Physical Plan;為了更好的對整個過程進行理解,下文通過一個簡單示例進行解釋。

      Parser

      Parser簡單來說是將SQL字符串切分成一個一個Token,再根據一定語義規則解析為一棵語法樹。Parser模塊目前基本都使用第三方類庫 ANTLR 進行實現,比如Hive、 Presto、SparkSQL等。下圖是一個示例性的SQL語句(有兩張表,其中people表主要存儲用戶基本信息,score表存儲用戶 的各種成績),通過Parser解析后的AST語法樹如下圖所示:

2

      Analyzer

      通過解析后的邏輯執行計劃基本有了?架,但是系統并不知道score、sum這些都是些什么?,此 時需要基本的元數據信息來表達這些詞素,最重要的元數據信息主要包括兩部分:表的Scheme和 基本函數信息,表的scheme主要包括表的基本定義(列名、數據類型)、表的數據格式(Json、Text)、表的物理位置等,基本函數信息主要指類信息。

      Analyzer會再次遍歷整個語法樹,對樹上的每個節點進行數據類型綁定以及函數綁定,比如people 詞素會根據元數據表信息解析為包含age、id以及name三列的表,people.age會被解析為數據類型 為int的變量,sum會被解析為特定的聚合函數,如下圖所示:

3

      Optimizer

      優化器是整個Catalyst的核心,上文提到優化器分為基于規則優化和基于代價優化兩種,此處只介 紹基于規則的優化策略,基于規則的優化策略實際上就是對語法樹進行一次遍歷,模式匹配能夠滿 足特定規則的節點,再進行相應的等價轉換。因此,基于規則優化說到底就是一棵樹等價地轉換為 另一棵樹。SQL中經典的優化規則有很多,下文結合示例介紹三種比較常?的規則:謂詞下推(Predicate Pushdown)、常量累加(Constant Folding)和列值裁剪(Column Pruning)

      1.謂詞下推, 下圖左邊是經過Analyzer解析后的語法樹,語法樹中兩個表先做join,之后再使用age>10對結果進行過濾。大家知道join算子通常是一個非常耗時的算子,耗時多少一般取決于參與join的兩個表的大小,如果能夠減少參與join兩表的大小,就可以大大降低join算子所需 時間。謂詞下推就是這樣一種功能,它會將過濾操作下推到join之前進行,下圖中過濾條件age>0以及id!=null兩個條件就分別下推到了join之前。這樣,系統在掃描數據的時候就對數據 進行了過濾,參與join的數據量將會得到顯著的減少,join耗時必然也會降低。

4

      2.常量累加,如下圖。 常量累加其實很簡單,就是 x+(1+2) -> x+3 這樣的規則,雖然是一個很小的改動,但是意義巨大。示例如果沒有進行優化的話,每一條結果都需要執行一次100+80的操作,然后再與變量math_score以及english_score相加,而優化后就不需要再執行100+80操作。

5

      3.列值裁剪,如下圖。這是一個經典的規則,示例中對于people表來說,并不需要掃描它的所有列值,而只需要列值id,所以在掃描people之后需要將其他列進行裁剪,只留下列id。這個 優化一方面大幅度減少了網絡、內存數據量消耗,另一方面對于列存數據庫(Parquet)來說 大大提高了掃描效率

6

      物理計劃

      經過上述步驟,邏輯執行計劃已經得到了比較完善的優化,然而,邏輯執行計劃依然沒辦法真正執行,他們只是邏輯上可行,實際上Spark并不知道如何去執行這個東?。比如Join只是一個抽象概 念,代表兩個表根據相同的id進行合并,然而具體怎么實現這個合并,邏輯執行計劃并沒有說明。

7

      此時就需要將邏輯執行計劃轉換為物理執行計劃,將邏輯上可行的執行計劃變為Spark可以真正執 行的計劃。比如Join算子,Spark根據不同場景為該算子制定了不同的算法策略,有BroadcastHashJoin、ShuffleHashJoin以及SortMergeJoin等(可以將Join理解為一個接口, BroadcastHashJoin是其中一個具體實現),物理執行計劃實際上就是在這些具體實現中挑選一個耗時最小的算法實現,這個過程涉及到基于代價優化(CBO)策略,所謂基于代價 , 是因為物理執行計劃的每一個節點都是有執行代價的,這個代價主要分為兩部分

      第一部分:該執行節點對數據集的影響,或者說該節點輸出數據集的大小與分布(需要去采集)

      第二部分:該執行節點操作算子的代價(相對固定,可用規則來描述)

      在SQL 執行之前會根據代價估算確定一種代價最小的方案來執行。我們這里以Join為例子做個簡單說明

      *在 Spark SQL 中 ,Join 可 分 為 Shuffle based Join 和 BroadcastJoin 。 Shuffle basedJoin 需要引入 Shuffle,代價相對較高。BroadcastJoin 無須 Join,但要求至少有一張表足夠小,能通過 Spark 的 Broadcast 機制廣播到每個 Executor 中。

      *在不開啟 CBO 中,Spark SQL 通過 spark.sql.autoBroadcastJoinThreshold 判斷是否啟用BroadcastJoin。其默認值為 10485760 即 10 MB。并且該判斷基于參與 Join 的表的原始大小。

      *在下圖示例中,Table 1 大小為 1 TB,Table 2 大小為 20 GB,因此在對二者進行 join 時,由于二者都遠大于自動 BroatcastJoin 的閾值,因此 Spark SQL 在未開啟 CBO 時選用 SortMergeJoin 對二者進行 Join。

      *而開啟 CBO 后,由于 Table 1 經過 Filter 1 后結果集大小為 500 GB,Table 2 經過 Filter 2后結果集大小為 10 MB 低于自動 BroatcastJoin 閾值,因此 Spark SQL 選用 BroadcastJoin。

8

      學習大數據開發,可以參考千鋒大數據培訓班提供的大數據學習路線,千鋒大數據培訓機構的學習路線提供完整的大數據開發知識體系,內容包含Linux&&Hadoop生態體系、大數據計算框架體系、云計算體系、機器學習&&深度學習。根據千鋒大數據培訓班提供的大數據學習路線圖可以讓你對學習大數據需要掌握的知識有個清晰的了解,并快速入門大數據開發。想要獲取免費的大數據學習資料可以添加我們的大數據技術交流qq群:857910996,加群找管理領取即可,有任何大數據相關問題也可以加群解決,等你來哦~~

tags:
聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT
欧美日韩调教_欧美精品啪啪_欧美精品97_国产女主播一区二区_欧美精品播放_亚洲精品乱码久久久久久蜜桃91_中文欧美日韩_夜夜爽www精品_国产亚洲亚洲_国产欧美日韩亚洲
国产精品v亚洲精品v日韩精品| 亚洲欧美日韩中文字幕一区二区三区 | 欧美伊人精品成人久久综合97| 一区二区欧美精品| 极品日韩久久| 中文久久乱码一区二区| 91蝌蚪porny九色| 欧美一区二区精品在线| 国产真实乱偷精品视频免| 欧美日韩一区视频| 韩国女主播成人在线| 欧美久久婷婷综合色| 狠狠色丁香久久婷婷综| 欧美日本视频在线| 国产精品1区二区.| 日韩视频在线你懂得| 国产91精品一区二区| 日韩欧美国产精品| 国产福利电影一区二区三区| 欧美一区午夜视频在线观看| 国产高清久久久| 精品成人佐山爱一区二区| 成人精品鲁一区一区二区| 日韩午夜中文字幕| 成人国产亚洲欧美成人综合网| 久久综合五月天婷婷伊人| 欧美在线日韩精品| 国产精品午夜免费| 亚洲久久一区| 香蕉成人啪国产精品视频综合网| 色婷婷久久久久swag精品| 精品中文字幕一区二区小辣椒| 777亚洲妇女| jlzzjlzz欧美大全| 国产精品色哟哟| 日韩一级精品| 日韩国产欧美视频| 欧美日高清视频| 成人黄页毛片网站| 欧美国产一区视频在线观看| 亚洲精一区二区三区| 午夜精品久久久久久久99樱桃| 欧美综合亚洲图片综合区| 国产一区三区三区| 久久精品日韩一区二区三区| 国产精品v欧美精品v日本精品动漫| 亚洲精选视频在线| 色婷婷亚洲婷婷| 国产成人精品亚洲午夜麻豆| 久久精品这里都是精品| 亚洲国产一区二区三区高清 | 亚洲精品中文字幕在线观看| 男人的天堂成人在线| 九九视频精品免费| 久久久久久久久久美女| 日韩午夜av在线| 久久成人羞羞网站| 国产夜色精品一区二区av| 亚洲免费精品| 久久er精品视频| 国产日产欧美一区二区三区| 国产精品一页| 国产乱码字幕精品高清av| 欧美激情一区三区| 久久人人97超碰人人澡爱香蕉| 国产盗摄精品一区二区三区在线 | 日本vs亚洲vs韩国一区三区二区 | 国产日本一区二区| 麻豆成人小视频| 国产精品888| 中文字幕中文在线不卡住| 久久亚洲综合| 成人午夜激情视频| 亚洲人成伊人成综合网小说| 欧美在线观看一区二区| 91丨九色丨国产丨porny| 亚洲小少妇裸体bbw| 日韩一区二区精品在线观看| 欧美成人一品| 天堂成人免费av电影一区| 精品免费一区二区三区| 亚洲人久久久| 国产精品一区二区三区四区| 成人欧美一区二区三区白人| 欧美午夜寂寞影院| 国产在线欧美| 久久精品999| 日本一区二区免费在线观看视频| 色综合久久99| 91免费精品国自产拍在线不卡| 首页国产欧美久久| 国产午夜精品福利| 欧美综合欧美视频| 欧美精品首页| 蜜桃精品视频在线观看| 中文字幕欧美日本乱码一线二线| 欧美色视频在线观看| 国内视频一区| 国产剧情av麻豆香蕉精品| 亚洲女同女同女同女同女同69| 欧美精品在线观看一区二区| 亚洲精品一区二区三区蜜桃久| 国产在线国偷精品免费看| 国产精品久久久久aaaa樱花| 欧美日韩成人综合天天影院 | 国产午夜亚洲精品羞羞网站| 色婷婷av久久久久久久| 91免费看视频| 狠狠色丁香久久婷婷综| 亚洲欧美日韩电影| 欧美一级在线免费| 久久久久一区二区三区| 国产精品久久| 国产69精品久久久久毛片| 亚洲成精国产精品女| 国产午夜精品一区二区三区视频| 欧美日本韩国一区二区三区视频| 国产一区91| 欧美日韩精品免费观看视一区二区| 久久99精品久久只有精品| 亚洲精品国产成人久久av盗摄 | 日韩精品一区二区三区视频| 久久一区激情| 亚洲二区精品| 99久久精品国产一区| 精品一区二区三区在线播放| 亚洲自拍偷拍av| 国产日韩欧美电影| 欧美丰满一区二区免费视频| 亚洲欧美日韩国产| 亚洲一级网站| 91丨porny丨在线| 国产河南妇女毛片精品久久久 | 亚洲日本久久| 女同一区二区| 国产成人av影院| 麻豆国产91在线播放| 夜夜嗨av一区二区三区网页| 国产精品美女久久久久aⅴ| 久久综合资源网| 日韩免费高清电影| 7777精品伊人久久久大香线蕉完整版 | 久久精品人人爽人人爽| 制服丝袜中文字幕一区| 在线欧美小视频| 免费看黄裸体一级大秀欧美| 亚洲黄色成人久久久| 欧美sm重口味系列视频在线观看| 国产成人综合在线| 激情综合一区二区三区| 美国毛片一区二区三区| 日韩不卡免费视频| 天天综合网 天天综合色| 亚洲精品视频观看| 亚洲色欲色欲www| 国产精品久久免费看| 亚洲国产激情av| 国产三级欧美三级日产三级99| 久久综合色8888| 精品国产91久久久久久久妲己 | 91免费国产在线| 暴力调教一区二区三区| 国产1区2区3区精品美女| 国产麻豆一精品一av一免费| 卡一卡二国产精品| 久久成人免费网| 久久97超碰国产精品超碰| 麻豆91在线看| 美国一区二区三区在线播放| 蜜臀精品久久久久久蜜臀| 日本亚洲电影天堂| 老司机免费视频一区二区| 裸体在线国模精品偷拍| 麻豆成人91精品二区三区| 麻豆国产精品777777在线| 日韩精品电影一区亚洲| 亚洲国产视频一区| 亚洲综合免费观看高清完整版在线| 亚洲乱码国产乱码精品精可以看| 亚洲欧美色图小说| 亚洲在线免费播放| 亚洲成人资源在线| 视频一区二区不卡| 麻豆国产欧美一区二区三区| 精品亚洲免费视频| 国产电影一区在线| 99久久久无码国产精品| 91色porny| 国产精品二区二区三区| 亚洲精品三级| 亚洲一区二区三区免费观看| 国产精品视频| 久久综合影视| 欧美日韩日日摸| 欧美一卡二卡三卡| 国产亚洲欧洲一区高清在线观看| 欧美国产禁国产网站cc| 亚洲日本一区二区三区| 亚洲成人久久影院| 久久国产精品第一页|