一种基于SparkSQL的LEFTJOIN连接计算优化方法技术

技术编号:36455997 阅读:14 留言:0更新日期:2023-01-25 22:54
本发明专利技术提供本发明专利技术提供一种基于Spark SQL的LEFT JOIN连接计算优化方法,通过原生Spark SQL提供的规则扩展接口,进行执行计划阶段的新增与重新编排,并使用布隆过滤器(Bloom Filter)技术或位图(Roaring Bitmap)技术实现程序运行时动态生成过滤器,并将过滤器作为过滤条件,尽可能避免无关数据参与计算,减少连接计算(LEFT JOIN)时的数据量,以此实现Spark SQL在该类场景下连接计算性能的提升和优化,以解决Sort Merge Join模型下连接计算容易出现资源浪费、运行时间偏长、磁盘内存不足时容易出现结果溢出,造成计算作业失败等问题。造成计算作业失败等问题。造成计算作业失败等问题。

【技术实现步骤摘要】
一种基于Spark SQL的LEFT JOIN连接计算优化方法


[0001]本专利技术属于数据计算
,更具体地说是一种基于Spark SQL技术的LEFT JOIN连接计算优化方法。

技术介绍

[0002]Spark是专为大规模数据处理而设计的快速通用的计算引擎,其中Spark SQL是Spark用于结构化数据处理的一个模块;目前Spark SQL提供了高效的计算框架,可针对海量数据提供通用的LEFT JOIN连接计算能力,Spark SQL的LEFT JOIN连接计算执行计划主要有三种实现,分别为Broadcast Hash JoinExec、Shuffled Hash Join Exec、Sort Merge Join Exec等。
[0003]其中基于排序的Sort Merge Join Exec,该执行计划是一种基于排序的连接计算实现,在进行连接计算之前,会根据分组的key进行分区并在分区内对数据排序;Spark SQL中的LEFT JOIN语句在Sort Merge Join模型下进行连接计算之前是无法获取右表有多少数据需要参与计算,如果左侧表是一个小表(数据量小于10亿),右侧连接表是个百亿数据的大表,此时真正需要参与等值连接计算的最大集合可能是小于10亿数量级别的,但是由于程序无法判断大表中哪些数据在小表中存在,导致大表中的数据需要全部从磁盘中进行扫描,并进行Shuffle排序等操作,会出现以下问题:
[0004](1)造成磁盘设备、网络设备与计算资源的浪费;
[0005](2)计算作业总体运行周期偏长;
[0006](3)在磁盘内存资源不足的情况下,极易出现排序结果从磁盘中溢出,导致最终计算作业失败。
[0007]因此,本专利技术提供了一种基于Spark SQL的LEFT JOIN连接计算优化方法,以解决上述Spark SQL中的LEFT JOIN语句在Sort Merge Join模型下进行连接计算存在的问题。

技术实现思路

[0008]为了解决上述技术问题,本专利技术提供一种基于Spark SQL的LEFT JOIN连接计算优化方法,通过使用布隆过滤器技术或位图技术实现程序运行时动态生成过滤器,并将过滤器作为过滤条件,尽可能避免无关数据参与计算,减少LEFT JOIN连接计算时的数据量,以解决Sort Merge Join模型下连接计算容易出现资源浪费、运行时间偏长、磁盘内存不足时容易出现结果溢出,造成计算作业失败等问题。
[0009]本专利技术具体的技术方案如下:
[0010]一种基于Spark SQL的LEFT JOIN连接计算优化方法,所述LEFT JOIN连接计算优化方法步骤如下:
[0011]S1:执行计划匹配,匹配计算数据中是否有Sort Merge Join节点,JOIN类型为LEFT JOIN;
[0012]S2:执行计划匹配确认,匹配到执行计划,则会提取连接计算节点类型,反之,规则
优化结束;
[0013]S3:判断小表数据量,根据小表数量选择合适的执行计划,小表数据量小于1亿条数据,则将Spark SQL原生的执行计划插入替换为Bloom Filter BoostFilter Exec,则优化规则结束;反之,小表数据量大于1亿条数据,则将Spark SQL原生的执行计划插入替换为Roaring Bitmap Boost Filter Exec,优化规则结束。
[0014]优选的,步骤S1中,执行计划的规则匹配基于布隆过滤器技术或位图技术实现。
[0015]优选的,步骤S2中,布隆过滤器技术实现Broadcast Bloom Filter Exchange Exec和Bloom Fiter Boost Filter Exec执行计划;
[0016]位图技术实现Roaring Bitmap Exchange Exec和Roaring Bitmap Boost Filter Exec。
[0017]其中布隆过滤器技术指可以用于检索一个元素是否在一个集合中,它由位数组和一系列随机映射函数(哈希函数)两部分组成的数据结构;它的优点是空间效率和查询时间都比一般的算法要好的多,缺点是有一定的误识别率和删除困难;
[0018]位图技术即Roaring Bitmap算法,指将32位的整形类型数据划分为216个数据块(Chunk),每一个数据块对应整数的高16位,并使用一个容器(Container)来存放一个数值的低16位;Roaring Bitmap将这些容器保存在一个动态数组中,作为一级索引,采用这种存储结构,Roaring Bitmap可以快速检索一个特定的值;在做位图计算(AND、OR、XOR)时,Roaring Bitmap提供了相应的算法来高效地实现在两种容器之间的运算。使得Roaring Bitmap无论在存储和计算性能上都表现优秀。
[0019]优选的,步骤S3中,Bloom Filter Boost Filter Exec是一个二元物理执行计划,该执行计划的首先会执行其子计划Broadcast Bloom Filter Exchange Exec。
[0020]优选的,所述Broadcast Bloom Filter Exchange Exec会收集小表中需要参与比较的列数据,数据从各计算节点收集后会发送至Spark的Driver节点,Spark Driver是指Spark SQL程序的管理节点,在Spark Driver节点会将收集到的小表数据,并将小表数据初始化为布隆过滤器。
[0021]优选的,步骤S3中,Roaring Bitmap Boost Filter Exec是一个二元物理执行计划,该执行计划的首先会执行其子计划Roaring Bitmap Exchange Exec。
[0022]优选的,所述Roaring Bitmap Exchange Exec实行前会生成全局位图数据的存储路径,存储路径BITMAP_PATH,所述Roaring Bitmap Exchange Exec子计划实行过程分为三个阶段:Map阶段、合并阶段、过滤阶段。
[0023]优选的,所述Map阶段用以在计算节点分布式初始化位图对象。
[0024]优选的,所述合并阶段,Roaring Bitmap Exchange Exec启动Reduce任务合并Map阶段生成的位图数据,并将合并后的位图数据存储至BITMAP_PATH下。
[0025]优选的,所述过滤阶段,Roaring Bitmap Exchange Exec将BITMAP_PATH变量广播至各计算节点,各计算节点在进行大表数据过滤时,将该位图数据在此路径下加载作为过滤条件。
[0026]与现有技术相比,本专利技术具有如下有益效果:
[0027]1、本专利技术通过使用布隆过滤器(Bloom Filter)技术或位图(Roaring Bitmap)技术实现程序运行时动态生成过滤本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于Spark SQL的LEFT JOIN连接计算优化方法,其特征在于,所述LEFT JOIN连接计算优化方法步骤如下:S1:执行计划匹配,匹配计算数据中是否有Sort Merge Join节点;S2:执行计划匹配确认,匹配到执行计划,则会提取连接计算节点类型,反之,规则优化结束;S3:判断小表数据量,根据小表数量选择合适的执行计划,小表数据量小于1亿条数据,则将Spark SQL原生的执行计划插入替换为Bloom FilterBoost Filter Exec,则优化规则结束;反之,小表数据量大于1亿条数据,则将Spark SQL原生的执行计划插入替换为Roaring Bitmap Boost Fi lter Exec,优化规则结束。2.如权利要求1所述基于Spark SQL的LEFT JOIN连接计算优化方法,其特征在于:步骤S1中,执行计划的规则匹配基于布隆过滤器技术或位图技术实现。3.如权利要求1或2所述基于Spark SQL的LEFT JOIN连接计算优化方法,其特征在于:步骤S2中,布隆过滤器技术实现Broadcast Bloom Fi lter Exchange Exec和Bloom Fiter Boost Fi lter Exec执行计划;位图技术实现Roaring Bitmap Exchange Exec和Roaring Bitmap Boost Filter Exec。4.如权利要求3所述基于Spark SQL的LEFT JOIN连接计算优化方法,其特征在于:步骤S3中,Bloom Filter Boost Filter Exec是一个二元物理执行计划,该执行计划的首先会执行其子计划Broadcast Bloom Fi lter Exchange Exec。5.如权利要求4所述基于Spark SQL的LEFT...

【专利技术属性】
技术研发人员:赵智峰李岩刘奕洋郑伟卢兴杨
申请(专利权)人:西安烽火软件科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1