一种基于SparkSQL的计算下推查询优化方法技术

技术编号:31016529 阅读:20 留言:0更新日期:2021-11-30 02:58
本发明专利技术公开一种基于Spark SQL的计算下推查询优化方法,涉及数据处理技术领域,包括:ZNBase数据库的存储层和ZBSpark客户端;存储层用于提供数据的集中存储和管理,可以多节点部署,并支持分布式管理;ZBSpark客户端基于Apace Spark平台,用于通过SSL gRPC协议与ZNBase数据库的存储层进行数据传输;ZBSpark客户端中构建有PushDownExpr,有Spark SQL语句输入时,ZBSpark客户端首先对Spark SQL语句进行词法解析、语法分析以及语义分析,随后生成并执行逻辑计划和物理计划,并通过改写可扩展优化器Catalyst将操作符进行规则匹配,进而添加到PushDownExpr中,再随后ZBSpark客户端通过SSL gRPC协议将PushDownExpr传输到存储层,存储层通过PushDownExpr完成数据预处理,并返回至ZBSpark客户端。本发明专利技术可以减少IO、内存占用,提高ZBSpark客户端分析海量数据的性能。能。能。

【技术实现步骤摘要】
一种基于Spark SQL的计算下推查询优化方法


[0001]本专利技术涉及技术数据处理领域,具体的说是一种基于Spark SQL的计算下推查询优化方法。

技术介绍

[0002]大数据时代的来临,给各行各业带来了深刻的变革。国产数据库就像能源一样已经成为提升国家和企业竞争力的关键要素。在现有的浪潮云溪数据库ZNBase中,存储引擎基于KV存储,主要是面向交易的处理过程,即OLTP(On

Line Transaction Processing)服务,在数据分析时,通过JDBC连接ZNBase数据库时,因为没有在ZNBase端进行列裁减,需要将ZNBase的全量KV数据进行返回,IO开销和内存占用很大,并要在java端进行解码,解码KV比较慢,而且jdbc没有分布式并行,只有单任务,这就造成了jdbc连接ZNBase的查询性能很差。由此可以看到,jdbc连接ZNBase的痛点之一就在于没有进行算子下推。

技术实现思路

[0003]本专利技术针对目前技术发展的需求和不足之处,提供一种基于Spark SQL的计算下推查询优化方法,通过在ZNBase数据库的存储层进行列裁减、过滤、聚合和排序处理,减少IO、内存占用,最终提高ZBSpark客户端分析海量数据的性能。
[0004]本专利技术的一种基于Spark SQL的计算下推查询优化方法,解决上述技术问题采用的技术方案如下:
[0005]一种基于Spark SQL的计算下推查询优化方法,其实现涉及ZNBase数据库的存储层和ZBSpark客户端;
[0006]ZNBase数据库的存储层用于提供数据的集中存储和管理,可以多节点部署,并支持分布式管理;
[0007]ZBSpark客户端基于Apace Spark平台,用于通过SSL gRPC协议与ZNBase数据库的存储层进行数据传输;
[0008]ZBSpark客户端中构建有下推因子扩展器PushDownExpr,在有Spark SQL语句输入ZBSpark客户端时,ZBSpark客户端首先对输入的Spark SQL语句进行词法解析、语法分析以及语义分析,随后生成并执行逻辑计划和物理计划,在执行逻辑计划和物理计划过程中,通过改写可扩展优化器Catalyst将操作符进行规则匹配,进而添加到下推因子扩展器PushDownExpr中,再随后,ZBSpark客户端通过SSL gRPC协议将下推因子扩展器PushDownExpr传输到ZNBase数据库的存储层,最后,ZNBase数据库的存储层通过下推因子扩展器PushDownExpr完成数据预处理,并返回至ZBSpark客户端。
[0009]可选的,在ZBSpark客户端搭建spark集群,集群节点上运行有ZBSpark Driver进程和ZBSpark Executor进程,ZBSpark客户端通过ZBSpark Driver进程创建一批tasks,并将这一批tasks分配到不同ZBSpark Executor进程中执行,每个ZBSpark Executor进程持有一个线程池,每个线程执行一个task,去ZNBase数据库的存储层读取数据。
[0010]进一步可选的,所涉及ZBSpark客户端搭建spark集群时,要设置master节点和worker节点,一个集群有多个master节点和多个worker节点,ZBSpark Driver进程运行在master节点/worker节点上,ZBSpark Executor进程运行在worker节点上,且一个worker节点上可以部署多个ZBSpark Executor进程。
[0011]进一步可选的,所涉及ZBSpark客户端通过ZBSpark Driver进程首先创建sparkContext对象,随后向集群管理者申请资源,再随后调度和执行应用程序,读取ZNBase数据库存储层的元数据信息,进而将应用程序分成多个stage,为每个stage创建一批tasks,最后将这些tasks分配到各个ZBSpark Executor中执行。
[0012]进一步可选的,所涉及ZBSpark客户端通过ZBSpark Driver进程向集群管理者申请spark应用所需的资源后,集群管理者会根据spark应用所设置的参数在各个worker节点上分配一定数量的ZBSpark Executor进程,每个ZBSpark Executor进程都占用一定数量的cpu和memory;
[0013]ZBSpark Driver进程申请到spark应用所需的资源以后,即开始调度和执行应用程序,读取ZNBase数据库存储层的元数据信息。
[0014]可选的,所涉及下推因子扩展器PushDownExpr中包括投影下推、条件下推、聚合下推、order by/limit下推四种方式;
[0015]下推因子扩展器PushDownExpr通过至少一种下推方式完成数据预处理。
[0016]进一步可选的,所涉及投影下推即列裁剪,即下推因子扩展器PushDownExpr在返回ZBSpark客户端的数据中去掉对后续操作没用的列。
[0017]进一步可选的,所涉及条件下推即将filter算子下推到ZNBase数据库的存储层,存储层先进行预过滤,将符合条件的数据返回给ZBSpark客户端;
[0018]Spark SQL语句中的filter算子有两种,第一种逻辑过滤条件:And、Not、Or,第二种基本过滤条件:EqualNullSafe、EqualTo、GreaterThan、GreaterThanOrEqual、In、IsNotNull、IsNull、LessThan、LessThanOrEqual、StringContains、StringEndsWith、StringStartsWith。
[0019]进一步可选的,所涉及聚合下推是将聚合函数Count、Max、Min、Sum、Avg下推到ZNBase数据库的存储层,在存储层进行聚合求值,将求值结果返回给ZBSpark客户端。
[0020]进一步可选的,所涉及order by下推可以指定字段以Asc还是Desc排序,在PushDownExpr的OrderbyCols中指定排序列ID,在OrderDirections中指定是Asc还是Desc,0代表Asc,1代表Desc;
[0021]limit下推可以限定本次读取返回数据的行数。
[0022]本专利技术的一种基于Spark SQL的计算下推查询优化方法,与现有技术相比具有的有益效果是:
[0023](1)本专利技术通过下推因子扩展器PushDownExpr在ZNBase数据库的存储层进行列裁减、过滤、聚合和排序处理,可以减少IO、内存占用,提高ZBSpark客户端分析海量数据的性能;
[0024](2)本专利技术减少了ZNBase数据库的存储层向ZBSpark客户端返回的数据量,降低了gRPC网络传输的时延。
附图说明
[0025]附本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于Spark SQL的计算下推查询优化方法,其特征在于,其实现涉及ZNBase数据库的存储层和ZBSpark客户端;所述ZNBase数据库的存储层用于提供数据的集中存储和管理,可以多节点部署,并支持分布式管理;所述ZBSpark客户端基于Apace Spark平台,用于通过SSL gRPC协议与ZNBase数据库的存储层进行数据传输;所述ZBSpark客户端中构建有下推因子扩展器PushDownExpr,在有Spark SQL语句输入所述ZBSpark客户端时,所述ZBSpark客户端首先对输入的Spark SQL语句进行词法解析、语法分析以及语义分析,随后生成并执行逻辑计划和物理计划,在执行逻辑计划和物理计划过程中,通过改写可扩展优化器Catalyst将操作符进行规则匹配,进而添加到下推因子扩展器PushDownExpr中,再随后,所述ZBSpark客户端通过SSL gRPC协议将下推因子扩展器PushDownExpr传输到ZNBase数据库的存储层,最后,所述ZNBase数据库的存储层通过下推因子扩展器PushDownExpr完成数据预处理,并返回至ZBSpark客户端。2.根据权利要求1所述的一种基于Spark SQL的计算下推查询优化方法,其特征在于,在所述ZBSpark客户端搭建spark集群,集群节点上运行有ZBSpark Driver进程和ZBSpark Executor进程,所述ZBSpark客户端通过ZBSpark Driver进程创建一批tasks,并将这一批tasks分配到不同ZBSpark Executor进程中执行,每个ZBSpark Executor进程持有一个线程池,每个线程执行一个task,去ZNBase数据库的存储层读取数据。3.根据权利要求2所述的一种基于Spark SQL的计算下推查询优化方法,其特征在于,所述ZBSpark客户端搭建spark集群时,要设置master节点和worker节点,一个集群有多个master节点和多个worker节点,ZBSpark Driver进程运行在master节点/worker节点上,ZBSpark Executor进程运行在worker节点上,且一个worker节点上可以部署多个ZBSpark Executor进程。4.根据权利要求3所述的一种基于Spark SQL的计算下推查询优化方法,其特征在于,所述ZBSpark客户端通过ZBSpark Driver进程首先创建sparkContext对象,随后向集群管理者申请资源,再随后调度和执行应用程序,读取ZNBase数据库存储层的元数据信息,进而将应用程序分成多个stage,为每个stage创建一批tasks,最后将这些tasks分配...

【专利技术属性】
技术研发人员:魏力
申请(专利权)人:浪潮云信息技术股份公司
类型:发明
国别省市:

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

1