[發明專利]一種提高Spark SQL的查詢效率的方法有效
| 申請號: | 201810351379.9 | 申請日: | 2018-04-17 |
| 公開(公告)號: | CN108710640B | 公開(公告)日: | 2021-11-12 |
| 發明(設計)人: | 宋愛波;萬雨桐 | 申請(專利權)人: | 東南大學 |
| 主分類號: | G06F16/2455 | 分類號: | G06F16/2455 |
| 代理公司: | 南京眾聯專利代理有限公司 32206 | 代理人: | 許小莉 |
| 地址: | 210096 *** | 國省代碼: | 江蘇;32 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 提高 spark sql 查詢 效率 方法 | ||
1.一種提高Spark SQL的查詢效率的方法,其特征在于,該方法包括如下步驟:
步驟S1:構建查詢預分析模塊,通過估算模型,計算Shuffle產生的中間數據的大小,從而計算出用于緩存所述中間數據的中間數據緩存層的總大??;
步驟S2:根據步驟1計算出的中間數據緩存層的總大小,結合集群中每個結點輸入數據的分布情況,通過緩存層分配模塊為每個結點設置合理的內存空間大??;
步驟S1中所述的計算Shuffle產生的中間數據的大小的具體方法是:查詢預分析模塊通過解析用戶輸入的查詢語句得到Spark下用戶輸入的查詢語句的工作流,根據估算模型計算工作流中每個階段生成的中間數據大??;
所述工作流包括兩個階段,分別是進行投影、選擇、聚集操作的階段,和進行連接操作的階段,每個階段產生的中間數據的大小之后,通過求和即可得到緩存層的總大小Mtotal;
所述的投影、選擇、聚集操作的階段生成的中間數據大小的計算公式是:
投影操作的階段生成的中間數據大小:
|Dout(pro)|=βpro|Din| (1)
式中,|Dout(pro)|表示投影操作生成中間數據的大小,|Din|表示輸入數據的大小,βpro表示做投影操作后的數據占總數據的比例,其中βpro=Lpro/LD,Lpro是投影屬性長度,LD是所有屬性總長度;
選擇操作的階段生成的中間數據大?。?/p>
|Dout(fil)|=βfil|Din| (2)
式中,|Dout(fil)|表示選擇操作生成中間數據的大小,βfil表示做選擇操作后的數據占總數據的比例,其值由具體的選擇條件和原表的數據分布有關;
聚集操作的階段生成的中間數據大小:
|Dout(agg)|≈0 (3)
式中,|Dout(agg)|表示聚集操作生成的中間數據的大小,聚集操作返回某一屬性的和或平均值,因此輸出大小可以忽略不計;
所述的連接操作,使用以下規則計算該階段輸出數據的大?。?/p>
式中,|Dout(join)|表示連接操作生成中間數據的大小,表示輸入表格D1的大小,表示輸入表格D2的大小,γ表示做連接操作后的數據占總數據的比例;
如果無連接條件C,則變成笛卡爾乘積,γ=1;
如果沒有元組滿足連接條件C,則γ=0,0≤γ≤1;
如果連接條件為D1.A=D2.B,則有下面三種特殊情況:
(1)如果A是D1的主鍵,則D2中的每個元組最多與D1中的一個元組匹配,即那么,同理,若B是D2的主鍵,
(2)如果A不是D1的主鍵,B也不是D2的主鍵,而屬性A、B在相同的域M上服從均勻分布,則
式中,M表示屬性A、B在域M上重疊部分的大??;
(3)如果A不是D1的主鍵,且B也不是D2的主鍵,而屬性A、B不服從均勻分布,則γ需要根據具體的數據集,參照表結構和數據規模,實際運行采樣獲取數據,采用直方圖方法進行估計。
2.根據權利要求1所述的提高Spark SQL的查詢效率的方法,其特征在于,步驟S2中在獲得緩存層的總大小后,緩存層分配模塊統計輸入數據的每一個數據塊在集群中的分布情況,按比例為不同的結點開辟不同大小的內存。
3.根據權利要求1所述的提高Spark SQL的查詢效率的方法,其特征在于,所述的中間數據緩存層利用分布式內存文件系統Alluxio。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于東南大學,未經東南大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201810351379.9/1.html,轉載請聲明來源鉆瓜專利網。





