[发明专利]一种基于GPU的Spark SQL加速方法在审
申请号: | 202310417348.X | 申请日: | 2023-04-19 |
公开(公告)号: | CN116303550A | 公开(公告)日: | 2023-06-23 |
发明(设计)人: | 周昊程;吴鹏;刘友春;李禹梁;侯晓泽;齐亚东 | 申请(专利权)人: | 江苏电力信息技术有限公司 |
主分类号: | G06F16/242 | 分类号: | G06F16/242;G06F16/2455;G06F9/50;G06F9/48;G06F16/22 |
代理公司: | 南京汇盛专利商标事务所(普通合伙) 32238 | 代理人: | 陈扬 |
地址: | 210024 江*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 gpu spark sql 加速 方法 | ||
1.一种基于GPU的SparkSQL加速方法,其特征在于,包括以下步骤:
S1,SparkSQL由投影、数据和条件组成,分别对应SQL查询过程中的结果、数据和操作,SQL语句按结果、数据和操作次序来描述;
S2,对读入的SQL语句进行解析,分辨出SQL语句中的关键词、表达式等,从而判断SQL语句是否规范,进而形成执行树,将执行树和数据字典进行绑定和执行,在这些计划中选择一个最优计划执行;
S3,基于SparkSQL架构,引入GPU通信管理模块和GPU加速模块实现通过GPU对SQL的处理进行加速,主要包括对CPU与GPU之间的协作管理,数据交换优化,可伸缩的分布式数据集RDD执行操作的优化和通过Cuda编程实现表的操作,具体到对表的操作有连接、扫描和排序操作,采用Cuda实现,以实现对表操作的加速。
2.根据权利要求1所述的基于GPU的SparkSQL加速方法,其特征在于:利用SparkGPU适配模块,发现系统GPU资源,支持sparkstandalone模式部署的集群,发现worker节点中存在的GPU资源,spark任务调度器在执行sparkSQL任务时,发现worker节点存在GPU资源,优先调度使用该节点GPU完成计算任务。
3.根据权利要求1所述的基于GPU的SparkSQL加速方法,其特征在于:利用GPU通信管理模块,实现GPU与CPU之间的通信工作,GPU与CPU通过PCIe总线进行数据交换,流程是GPU开辟设备内存,CPU将内存中需要计算的数据拷贝给GPU,运行GPU核函数并发执行运算,运算完成后通过DMA方式将计算结果通过PCIe总线从GPU内存拷贝到主机内存。
4.根据权利要求3所述的基于GPU的SparkSQL加速方法,其特征在于:在GPU核函数中实现Scan、Join和Groupby三类SQL操作,在执行过程中将操作请求进行合并,减少CPU和GPU之间的数据交互。
5.根据权利要求1所述的基于GPU的SparkSQL加速方法,其特征在于:利用GPU加速模块,在GPU中实现表的连接操作,包括内联、左联和右联,实现算法包括Nestloop和hash两种连接算法,Sort排序算法使用双条排序算法,即比较顺序与数据无关的排序方法,主机内存中sparkRDD在内存中按行的方式存储,为列式存储,使用off-heap代替heap内存,避免java垃圾回收改变内存中对象存储位置。
6.根据权利要求5所述的基于GPU的SparkSQL加速方法,其特征在于:Sort排序算法使用双条排序算法,具体过程是:将一个双调序列切成两半,每一段的单调性统一,然后将两段叠放起来,进行两两比较,这样够在左右两段分别得到一个双调序列,且左边的双调序列中元素全部小于右侧得到的双调序列的所有元素;迭代这个过程,每次都能将序列二分成两个子双调序列,直到这个子双调序列的长度为2,也就变成了一个单调子序列,这个过程排序后原先的长双调序列就变为有序了。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于江苏电力信息技术有限公司,未经江苏电力信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202310417348.X/1.html,转载请声明来源钻瓜专利网。