亚洲 国产精品 日韩-亚洲 激情-亚洲 欧美 91-亚洲 欧美 成人日韩-青青青草视频在线观看-青青青草影院

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

手機站
千鋒教育

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

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

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

當前位置:首頁  >  技術干貨  > 大數據實時計算引擎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,但是這種方案顯得很不優雅,很不靈活?;诖鷥r優化就是為了解決這類問題,它會針對每個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
亚洲综合成人婷婷五月在线观看 | 7777色情XXXX欧美| japanese国产在线观看| 国产成人午夜精品一区二区三区| 韩国免费A级作爱片视频| 美国ZOOM人与ZOOM| 日产无人区一线二线三线观看| 午夜无码免费福利视频网址| 一二三四影视在线看片免费 | 亚洲最大成人网站| 帮妺妺洗澡忍不住C了她作文| 国产成人综合久久久久久 | 国产成人综合一区人人| 精品人妻少妇一区二区三区| 欧美日韩XXOO无码专区| 无码任你躁久久久久久久| 一本无线乱码不卡一二三四| 成年黄网站18禁免费观看一区 | 大胆GOGO高清在线观看| 黑人巨大无码中文字幕无码| 女人被爽到高潮视频免费国产| 视频一区二区三区在线观看| 亚洲欧洲日产国码中文字幕| 办公室的交易HD在线观看| 国产一区二区三区小说| 男人进入女人里面想动还是不想动 | 一区二区日韩视频| 丰满人妻少妇无码喷水| 久久精品国产亚洲AV瑜伽| 人妻体内射精一区二区三四| 亚洲爆乳WWW无码专区| A区B区C区D区乱码| 国产真实老熟女无套内射| 欧美成人性生免费看的| 性一交一乱一伦一在线小视频| 影音先锋最新AV资源网站| 公车上双乳被老汉揉搓玩弄漫画| 久久精品国产免费播高清无卡| 日本一线和三线的区别| 亚洲乱码日产精品一二三| 成人免费毛片内射美女-百度| 精品无码无人网站免费视频| 日韩视频一区二区三区| 岳打开双腿开始配合交换| 国产精品久久久久久TV| 欧美VA亚洲VA日韩VA| 亚洲AV午夜成人影院老师机影院 | 孩教小UXXXⅩ精品| 人妻中出无码一区二区三区| 亚洲色精品88色婷婷七月丁香| 丁香花在线影院观看在线播放| 久久婷婷五月综合色精品| 特黄AAAAAAAAA毛片免费视频| 在线观看亚洲AV电影网站| 国产啪亚洲国产精品无码| 人妻无码一区二区三区TV| 一本大道久久东京热无码AV| 国产精品免费久久久久影院仙踪林| 男同桌上课用手指进去了好爽| 亚洲AV无码一区二区乱子仑| 第一次接20厘米得黑人活| 浪潮AV激情高潮国产蜜臀| 亚洲AV蜜臀日韩AV无码污网站| 爸的比老公大两倍儿媳叫什么呢| 久久久久亚洲波多野结衣| 午夜精品久久久久久毛片| 成人免费无码不卡毛片视频| 老太奶性BBWBBW| 亚洲VA久久久噜噜噜久久天堂 | 99久久国产露脸国语对白| 娇小6一8XXXXX| 天天躁夜夜躁狠狠躁2021| 50熟妇的长奶头满足了我| 精品无码人妻一区二区三区18 | 日本不良网站正能量入口大豆行情| 亚洲伊人久久精品影院| 国产日产欧洲无码视频无遮挡| 日产精品一二三区| 99久久国产综合精品女| 久久久久久精品免费不卡| 亚洲AV无码国产精品色午友在线 | 特级做A爰片毛片免费看无码| AA丁香综合激情| 久亚洲一线产区二线产区三线产区| 亚洲AV蜜臀日韩AV无码污网站| 国产成年无码AⅤ片在线观看 | 亚洲AV无码乱码国产麻豆穿越 | AV人摸人人人澡人人超碰| 巨大黑人极品videos精品| 亚洲精品无码久久毛片| 国产色无码精品视频免费| 四十路の五十路熟女豊満| 成av人片一区二区三区久久| 欧美一区二期三区视频| 自拍偷在线精品自拍偷| 开心亚洲五月丁香五月| 亚洲午夜无码毛片av| 精品国产熟女成人AV| 亚洲AV日韩精品久久久久久A| 国产果冻豆传媒麻婆精东影视| 日产乱码一二三区别免费看| WYC忘忧草在线看WWW| 哦┅┅快┅┅用力啊┅┅在线观看| 一女多男双修NP古言| 久久久精品国产SM调教网站| 亚洲乱码无码永久不卡在线| 黑人60厘米全进去了| 亚洲AV无码成人| 国产亚州精品女人久久久久久| 无码人妻出轨与黑人中文字幕| 国产成人蜜桃AV无码永久免费| 色综合久久综合欧美综合网| 成人年无码AV片在线观看| 日本久久久久精品免费网播放| WWW国产无套内射COM| 亲孑伦一区二区三区| 爆乳熟妇一区二区三区| 人人妻人人澡人人爽秒播| 唱歌的大姐姐也想做| 日韩欧美国产精品亚洲二区| 成人女人爽到高潮的Av在线| 日日AV色欲香天天综合网| 放在里面边顶边吃饭H| 四季亚洲Av日韩AV无码中文| 国产成人AV无码精品| 无码精品国产VA在线观看| 国产无线乱码一区二三区| 亚洲AV无码专区色爱天堂老鸭窝 | 无罩大乳的熟妇正在播放| 国产伦久视频免费观看视频| 亚欧免费无码AⅤ在线观看蜜桃| 国模无码视频一区二区三区| 亚洲国产精品尤物YW在线观看 | 中文字幕乱码亚洲无线码| 男女猛烈XX00免费视频试看| GAY片男同网站WWW| 日韩午夜福利无码专区A| 国产精品爱久久久久久久小说| 香蕉国产成版人视频APP| 精东天美麻豆果冻传媒MV| 亚洲综合久久一区二区| 免费A级毛片无码A∨中文字幕| 99亚洲乱人伦AⅤ精品| 日本熟妇JAPANESE丰满| 国产精品18久久久久久vr| 亚洲AV永久无码3D动漫在线观| 久久97久久97精品免视看| 中文字幕日本乱码仑区在线| 清纯校花挨脔日常H惩罚视频| 短裙公车被直接进入| 西西人体44RT NET毛最多| 精品人妻人人做人人爽| 中文无码字幕中文有码字幕| 欧美亚洲国产成人一区二区三区| 抽搐一进一出再深一点| 午夜福利YW在线观看2020| 精品系列无码一区二区三区 | 樱桃空空人妻无码内射| 欧美性猛交XXXX黑人猛交| 丰满少妇AV无码区| 亚洲爆乳精品无码一区二区| 老太性开放BBWBBWBBW| 爸爸你不能谢在里面来| 无码专区人妻系列日韩精品| 精品无码中文字幕不卡| AV在线一区二区三区| 天堂资源官网在线资源| 精品欧洲AV无码一区二区男男| 中文无码伦AV中文字幕在线| 日韩精品久久久免费观看| 国产在线 | 传媒麻豆| 岳把我用嘴含进满足我视频| 人妻无码中文字幕永久有效视频| 国产精品妇女一二三区| 野花视频免费观看完整版| 人人玩人人添人人澡东莞| 国产无人区码SUV| 中国又粗又大XXXXBBBB| 色天使综合婷婷国产日韩AV| 狠狠躁天天躁日日躁欧美| 99国精产品W灬源码1688钻| 天天噜日日噜狠狠噜免费| 久久久久精品无码观看不卡| 超碰97人人做人人爱可以下载| 亚洲AV永久无码精品无码影片 | 无码办公室丝袜OL中文字幕| 久久久一本精品99久久精品66| 成人H动漫无码网站久久| 亚洲成av人在线观看| 欧美人与性口牲恔配视频| 国产我和子的与子乱视频| 97在线视频免费人妻| 性荡视频播放在线视频7777| 免费A级毛片无码樱桃视频| 国产激情久久久久影院蜜桃AV| 亚洲无人区码二码三码区别| 日韩精品人妻系列无码专区| 久久精品成人亚洲另类欧美| 成人免费午夜无码视频在线播放| 亚洲欧洲日产国码无码|