一种分布式计算引擎数据查询优化方法、装置及存储介质制造方法及图纸

技术编号:38772004 阅读:13 留言:0更新日期:2023-09-10 10:45
本发明专利技术涉及一种分布式计算引擎数据查询优化方法、装置及存储介质,应用于数据库查询技术领域,包括:本申请在对大批量数据表之间做关联查询时,通过Spark计算引擎解析出能被下推的谓词,Spark将他们传递给Parquet进行谓词合并操作,将所述谓词合并操作放至叶子节点上使谓词合并操作在数据源上执行,通过将谓词下推到数据源的位置进行数据清洗,过滤掉大表中大量无效的数据,避免大量无用数据进入到shuffle阶段,这样join所需处理的数据就会更少,提高了数据查询的效率。提高了数据查询的效率。提高了数据查询的效率。

【技术实现步骤摘要】
一种分布式计算引擎数据查询优化方法、装置及存储介质


[0001]本专利技术涉及医疗评估
,具体涉及一种分布式计算引擎数据查询优化方法、装置及存储介质。

技术介绍

[0002]在应用分布式计算引擎(spark)实现作业开发时,经常会遇到在海量数据情况下的随机查询或多表聚合关联查询;全表扫描是现有技术中一种常见的顺序读取数据的查询方式,虽然任何对数据的访问需求,都可以通过全表扫描的方式解决,但在逻辑上,这种方式会读取表中的所有行,然后检查每一行是否满足语句的限制条件,尤其在表与表之间进行关联并有过滤条件的情况下,只能先对SQL中的每一个表先进行全表扫描,过滤出相应结果集后再通过与对另一张表进行全表扫描后过滤出来的结果集进行JOIN操作;由于全表扫描过程中,需要对每张表都要进行全表扫描,因此会产生大量的IO消耗,故查询性能就不可能太理想;

技术实现思路

有鉴于此,本专利技术的目的在于提供一种分布式计算引擎数据查询优化方法、装置及存储介质,以解决现有技术中,需要对每张表都进行全表扫描,会产生大量的IO消耗,查询性能不太理想的问题。
[0003]根据本专利技术实施例的第一方面,提供一种分布式计算引擎数据查询优化方法,包括:通过Spark计算引擎解析出能被下推的谓词,Spark将他们传递给Parquet进行谓词合并操作,将所述谓词合并操作放至叶子节点上使谓词合并操作在数据源上执行;基于过滤后的数据源选取任意两个目标表进行join操作,获取目标数据。
[0004]优选地,所述基于过滤后的数据源选取任意两个目标表进行join操作,获取目标数据包括:通过压缩Bloom Filter进行哈希映射,获取任意两个目标表中共同拥有的属性连接值,基于共同的属性连接值提取所述任意两个目标表的目标数据,并分别存储到新的位数组A和位数组B中。
[0005]优选地,还包括:在获取新的位数组A和位数组B后,通过压缩Bloom Filter进行网络广播位数组A和位数组B,将其他不参与连接阶段的无效数据进行去除。
[0006]优选地,所述进行谓词合并操作前,包括:将谓词处理成父表达式为and操作符,且子表达式为基础表达式,基础表达式包括
一元操作表达式和二元操作表达式,子表达式中的谓词用or操作符连接起来的表达式,采用布尔代数的公式对谓词表达式进行推导,在推导的过程中,对发现的重复谓词进行消除。
[0007]优选地:将基础表达式根据表中的列名进行分组。
[0008]优选地,所述谓词合并操作包括:对分组后的子表达式中的谓词进行合并,如是and表达式,则对and表达式下的分组进行合并并取交集;如果是or表达式,对or表达式下的分组进行合并并取并集;将合并之后的谓词表达式替换原有表达式,如合并之后的谓词表达式是常量,则根据谓词的输入,将谓词中可替换的表达式替换成常量,直到全部替换成当前表达式。
[0009]根据本专利技术实施例的第二方面,提供一种分布式计算引擎数据查询优化装置,所述装置包括:谓词下推模块:用于通过Spark计算引擎解析出能被下推的谓词,Spark将他们传递给Parquet进行谓词合并操作,将所述谓词合并操作放至叶子节点上使谓词合并操作在数据源上执行;数据获取模块:用于基于过滤后的数据源选取任意两个目标表进行join操作,获取目标数据。
[0010]根据本专利技术实施例的第三方面,提供一种存储介质,所述存储介质存储有计算机程序,所述计算机程序被主控器执行时,实现所述的基于数字孪生的物流装备再设计方法中的各个步骤。
[0011]本专利技术的实施例提供的技术方案可以包括以下有益效果:本申请在对大批量数据表之间做关联查询时,通过Spark计算引擎解析出能被下推的谓词,Spark将他们传递给Parquet进行谓词合并操作,将所述谓词合并操作放至叶子节点上使谓词合并操作在数据源上执行,通过将谓词下推到数据源的位置进行数据清洗,过滤掉大表中大量无效的数据, 避免大量无用数据进入到shuffle阶段,这样 join 所需处理的数据就会更少,提高了数据查询的效率。
[0012]应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本专利技术。
附图说明
[0013]此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本专利技术的实施例,并与说明书一起用于解释本专利技术的原理。
[0014]图1是根据一示例性实施例示出的一种分布式计算引擎数据查询优化方法的流程示意图;图2是根据另一示例性实施例示出的一种分布式计算引擎数据查询优化装置的系统示意图;附图中:1

谓词下推模块,2

数据获取模块。
具体实施方式
[0015]这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本专利技术相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本专利技术的一些方面相一致的装置和方法的例子。
[0016]实施例一图1是根据一示例性实施例示出的一种分布式计算引擎数据查询优化方法的流程示意图,如图1所示,该方法包括:S1,通过Spark计算引擎解析出能被下推的谓词,Spark将他们传递给Parquet进行谓词合并操作,将所述谓词合并操作放至叶子节点上使谓词合并操作在数据源上执行;S2,基于过滤后的数据源选取任意两个目标表进行join操作,获取目标数据;可以理解的是,我们知道SQL会被解析为一颗逻辑计划树,filter表示 where条件,join 表示 join 操作 scan_a 与 scan_b 表示从数据源 A、B 表拉取数据,在 Spark 中,提供了 DataSource API 接口用于拓展数据源,其中包含了下推接口用于指定需要下推到数据源的谓词,pushFilters 方法负责处理谓词下推,其实现很简单:匹配上 SupportsPushDownFilters 接口,然后根据我们的具体实现获取到 pushedFilters 与 postScanFilters,基于上述的原理,当Spark计算引擎解析出能被下推的filters后,Spark将他们传递给Parquet进行合并操作,并将合并操作放至叶子节点上使filters合并操作在数据源上执行,从而在数据源中真正的执行无效数据的过滤,基于过滤后的数据源选取任意两个目标表进行join操作,获取目标数据,这样在数据源就实现了目标数据的提取,这样 join 所需处理的数据就会更少,从而提高了数据拉取的效率;本申请在对大批量数据表之间做关联查询时,通过Spark计算引擎解析出能被下推的谓词,Spark将他们传递给Parquet进行谓词合并操作,将所述谓词合并操作放至叶子节点上使谓词合并操作在数据源上执行,通过将谓词下推到数据源的位置进行数据清洗,过滤掉大表中大量无效的数据, 避免大量无用数据进入到shuffle阶段,这样 join 所需处理的数据就会更少本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种分布式计算引擎数据查询优化方法,其特征在于,包括:通过Spark计算引擎解析出能被下推的谓词,Spark将他们传递给Parquet进行谓词合并操作,将所述谓词合并操作放至叶子节点上使谓词合并操作在数据源上执行;基于过滤后的数据源选取任意两个目标表进行join操作,获取目标数据。2.根据权利要求1所述的方法,其特征在于,所述基于过滤后的数据源选取任意两个目标表进行join操作,获取目标数据包括:通过压缩Bloom Filter进行哈希映射,获取任意两个目标表中共同拥有的属性连接值,基于共同的属性连接值提取所述任意两个目标表的目标数据,并分别存储到新的位数组A和位数组B中。3.根据权利要求2所述的方法,其特征在于,还包括:在获取新的位数组A和位数组B后,通过压缩Bloom Filter进行网络广播位数组A和位数组B,将其他不参与连接阶段的无效数据进行去除。4.根据权利要求1所述的方法,其特征在于,所述进行谓词合并操作前,包括:将谓词处理成父表达式为and操作符,且子表达式为基础表达式,基础表达式包括一元操作表达式和二元操作表达式,子表达式中的谓词用or操作符连接起来的表达式,采用布尔代数的公式对谓词表达式进行推导...

【专利技术属性】
技术研发人员:左俊华吴小前
申请(专利权)人:北京滴普科技有限公司
类型:发明
国别省市:

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

1