[发明专利]一种优化Spark SQL执行工作流的方法有效
| 申请号: | 201810536078.3 | 申请日: | 2018-05-28 |
| 公开(公告)号: | CN108763489B | 公开(公告)日: | 2022-02-15 |
| 发明(设计)人: | 宋爱波;万雨桐 | 申请(专利权)人: | 东南大学 |
| 主分类号: | G06F16/2453 | 分类号: | G06F16/2453;G06F16/2458 |
| 代理公司: | 南京众联专利代理有限公司 32206 | 代理人: | 许小莉 |
| 地址: | 210096 *** | 国省代码: | 江苏;32 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 优化 spark sql 执行 工作流 方法 | ||
1.一种优化Spark SQL执行工作流的方法,其特征在于,该方法包括如下步骤:
步骤S1:Catalyst框架中的解析器对用户提交的查询进行解析,形成逻辑执行计划树,所述逻辑执行计划树中的每一个结点对应Spark中的一个任务,通过对该逻辑执行计划树的分析可以精确定位每一个任务对应查询中的具体操作,从而可以对该任务的执行代价进行计算;构建Spark任务执行的代价模型,分为读取输入数据的代价,对中间数据进行排序的代价和写输出数据的代价,将三者进行求和得到任务执行的总代价,即;
C(Stage)=Cread(Stage)+Csort(Stage)+Cwrite(Stage) (1)
式(1)中:
C(Stage)为任务执行的总代价;
Cread(Stage)为读取输入数据的代价;
Csort(Stage)为对中间数据进行排序的代价;
Cwrite(Stage)为写输出数据的代价;
由于Cread(Stage)和Cwrite(Stage)都是I/O代价,因此式(1)表达为CI/O=C0T+C1x,其中CI/O为为读取输入数据的代价和写输出数据的代价之和,C0为寻道时间和旋转延迟时间,T为发生I/O次数,C1为传输1MB数据所需时间,x为读写数据大小;
所述的读取输入数据的代价Cread(Stage)的计算公式如式(2)所示:
式中:tr为本地读取1MB数据所需时间,α为非本地数据占总数据的百分比,tb为网络传输1MB数据所需时间,|Din|为Spark Stage输入数据的大小,|Dout|为Spark Stage输出数据的大小,B为Spark task缓冲区大小;
所述的写输出数据的代价Cwrite(Stage)的计算方法如式(3)所示,
式中:tw为本地写入1MB数据所需时间;
所述的对中间数据进行排序的代价Csort(Stage)的计算方式如式(4)所示:
式中m为每个Stage中包含的任务个数;
所述的任务执行的总代价C(Stage)的计算如式(5)所示:
式中P为排序的次数,
步骤S2:通过使用代价模型比较产生的额外的排序代价、后续任务的读取代价与节约的读取输入数据的代价来决定是否对具有输入相关性的任务进行合并;计算它们分别执行的代价之和与合并成一个任务之后执行的代价如式(6)所示:
式中,Stagei与Stagej为对于两个具有输入数据相关性的任务,C(Stagei+j)为两个具有输入数据相关性的任务Stagei与Stagej合并成一个任务之后执行的代价,为Stagei与Stagej输出数据的大小之和。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于东南大学,未经东南大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810536078.3/1.html,转载请声明来源钻瓜专利网。





