CN117591533A - 物理计划生成方法、装置、设备及存储介质 - Google Patents

物理计划生成方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN117591533A
CN117591533A CN202311523767.8A CN202311523767A CN117591533A CN 117591533 A CN117591533 A CN 117591533A CN 202311523767 A CN202311523767 A CN 202311523767A CN 117591533 A CN117591533 A CN 117591533A
Authority
CN
China
Prior art keywords
full
physical plan
dependency relationship
physical
sql
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202311523767.8A
Other languages
English (en)
Inventor
熊均文
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Merchants Bank Co Ltd
Original Assignee
China Merchants Bank Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by China Merchants Bank Co Ltd filed Critical China Merchants Bank Co Ltd
Priority to CN202311523767.8A priority Critical patent/CN117591533A/zh
Publication of CN117591533A publication Critical patent/CN117591533A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24552Database cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/427Parsing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种物理计划生成方法、装置、设备及存储介质,属于计算机技术领域。该方法包括:获取SQL语句集合;基于预设的子查询指令,根据所述SQL语句集合,构建数据集依赖关系;基于预先构建的全阶代码优化算法,根据所述数据集依赖关系,获得全阶物理计划。通过子查询指令和全阶代码优化算法,得出了全阶物理计划。由此,实现了SQL作业的批量执行,解决了现有技术中云上Spark集群批处理作业运行缓慢、资源占用时间长的技术问题。相较于现有技术,具有耗时短、资源消耗少的优势。

Description

物理计划生成方法、装置、设备及存储介质
技术领域
本发明涉及计算机技术领域,尤其涉及一种物理计划生成方法、装置、设备及存储介质。
背景技术
批量SparkSQL执行作业在云上作业数量日益增长的背景下,受HDFS集群稳定性的影响,性能出现下降的趋势。特别部分重要系统本身有链路长、关联表大、关联复杂等特点,存在资源消耗大,运行时间长、试错成本高等痛点,影响下游重要系统按时作业。
发明内容
本发明的主要目的在于提供一种物理计划生成方法、装置、设备及存储介质,旨在解决云上Spark集群批处理作业运行缓慢、资源占用时间长的问题。
为实现上述目的,本发明提供一种物理计划生成方法,所述物理计划生成方法包括以下步骤:
获取SQL语句集合;
基于预设的子查询指令,根据所述SQL语句集合,构建数据集依赖关系;
基于预先构建的全阶代码优化算法,根据所述数据集依赖关系,获得全阶物理计划。
可选地,所述基于预先构建的全阶代码优化算法,根据所述数据集依赖关系,获得全阶物理计划的步骤包括:
根据所述数据集依赖关系,构建SQL语句依赖关系;
基于所述全局代码优化算法,根据所述数据集依赖关系,构建全局数据集依赖关系;
通过SQL语句中的插入语句,根据所述SQL语句依赖关系和所述全局数据集依赖关系,生成所述全阶物理计划。
可选地,所述通过SQL语句中的插入语句,根据所述SQL语句依赖关系和所述全局数据集依赖关系,生成所述全阶物理计划的步骤包括:
根据所述SQL语句依赖关系,构建全阶批处理执行计划;
通过所述插入语句调用预设的优化器,根据所述全局数据集依赖关系对全阶批处理执行计划进行优化,生成所述全阶物理计划。
可选地,所述基于预设的子查询指令,根据所述SQL语句集合,构建数据集依赖关系的步骤包括:
基于所述子查询指令,根据所述SQL语句集合中的SQL语句,创建虚拟表;
根据所述SQL语句,获取元数据,并通过预设的数据管理接口将所述元数据注册到预设的缓存表中;
根据所述虚拟表和注册后的缓存表,构建所述数据集依赖关系。
可选地,所述根据所述SQL语句,获取元数据,并通过预设的数据管理接口将所述元数据注册到预设的缓存表中的步骤之前,还包括:
获取缓存配置参数;
根据所述缓存配置参数,配置缓存级别和缓存方式,以供元数据注册。
可选地,所述基于预先构建的全阶代码优化算法,根据所述数据集依赖关系,获得全阶物理计划的步骤之前,还包括:
通过懒执行模式,构建全流程执行计划;
根据所述全流程执行计划,构建所述全阶代码优化算法。
可选地,所述获取SQL语句集合的步骤包括:
获取映射文件;
通过预设的解析接口,对所述映射文件进行解析,获得所述SQL语句集合。
此外,为实现上述目的,本发明还提供一种物理计划生成装置,所述物理计划生成装置包括:
语句获取模块,用于获取SQL语句集合;
关系构建模块,用于基于预设的子查询指令,根据所述SQL语句集合,构建数据集依赖关系;
计划生成模块,用于基于预先构建的全阶代码优化算法,根据所述数据集依赖关系,获得全阶物理计划。
本发明实施例还提出一种终端设备,所述终端设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的物理计划生成程序,所述物理计划生成程序被所述处理器执行时实现如上所述的物理计划生成方法的步骤。
本发明实施例还提出一种计算器可读存储介质,所述计算机可读存储介质上存储有物理计划生成程序,所述物理计划生成程序被处理器执行时实现如上所述的物理计划生成方法的步骤。
本发明实施例提出的一种物理计划生成方法、装置、设备及存储介质,通过获取SQL语句集合;基于预设的子查询指令,根据所述SQL语句集合,构建数据集依赖关系;基于预先构建的全阶代码优化算法,根据所述数据集依赖关系,获得全阶物理计划。通过子查询指令和全阶代码优化算法,得出了全阶物理计划。由此,实现了SQL作业的批量执行,解决了现有技术中云上Spark集群批处理作业运行缓慢、资源占用时间长的技术问题。相较于现有技术,具有耗时短、资源消耗少的优势。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
附图说明
图1为本发明物理计划生成装置所属终端设备的功能模块示意图;
图2为本发明物理计划生成方法第一示例性实施例的流程示意图;
图3为本发明物理计划生成方法中SQL批处理语句的结构示意图;
图4为本发明物理计划生成方法中传统QL框架执行的步骤图示意图;
图5为本发明物理计划生成方法中SparkSQL解析的流程示意图;
图6为本发明物理计划生成方法中Catalyst与CataLog的交互示意图;
图7为本发明物理计划生成方法第二示例性实施例的流程示意图;
图8为本发明物理计划生成方法第三示例性实施例的流程示意图;
图9为本发明物理计划生成方法中SparkSQL全阶物理计划构成的示意图;
图10为本发明物理计划生成方法第四示例性实施例的流程示意图;
图11为本发明物理计划生成方法中新框架批处理Spark Catalyst解析的流程示意图;
图12为本发明物理计划生成方法第五示例性实施例的流程示意图;
图13为本发明物理计划生成方法中缓存级别的对比示意图;
图14为本发明物理计划生成方法中临时表缓存方式的内容示意图;
图15为本发明物理计划生成方法中临时视图缓存方式的内容示意图;
图16为本发明物理计划生成方法第六示例性实施例的流程示意图;
图17为本发明物理计划生成方法第七示例性实施例的流程示意图;
图18为本发明物理计划生成方法另一示例性实施例的整体流程示意图;
图19为本发明物理计划生成方法中催收客户综合评分的加工流程示意图;
图20为本发明物理计划生成方法中SparkSQL传统方案cache table临时表的加工流程示意图;
图21为本发明物理计划生成方法中SparkSQL新方案临时表依赖的构建流程示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图作进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例的主要解决方案是:获取SQL语句集合;基于预设的子查询指令,根据所述SQL语句集合,构建数据集依赖关系;基于预先构建的全阶代码优化算法,根据所述数据集依赖关系,获得全阶物理计划。通过子查询指令和全阶代码优化算法,得出了全阶物理计划。由此,实现了SQL作业的批量执行,解决了现有技术中云上Spark集群批处理作业运行缓慢、资源占用时间长的技术问题。相较于现有技术,具有耗时短、资源消耗少的优势。
本发明实施例考虑到,相关技术方案受HDFS集群稳定性的影响,性能出现下降的趋势。特别部分重要系统本身有链路长、关联表大、关联复杂等特点,存在资源消耗大,运行时间长、试错成本高等痛点,影响下游重要系统按时作业。
基于此,本发明实施例提出一种解决方案,对Spark SQL传统执行方案做了以下改进:
(1)弃用Cache Table命令,替代方案是将其解析为select+临时表/视图名。
(2)由于Cache Table无法被正确解析,弃用该命令,通过select的查询语句进行运算,再对结果进行缓存,使得SQL语句能被Catalyst正确解析。
取消单步行动算子show函数
由于show函数导致了多余的计算步骤,我们取消该行动算子,减少单个SQL的执行步骤。
(3)调用CataLog API注册缓存信息
当缓存表的元数据缺失时,spark优化器优化失败,从而导致spark作业运行效率低。直接调用CataLog注册表信息,保证优化器正常工作。
(4)缓存级别与临时表缓存方式配置
新增缓存级别、缓存方式配置的参数,可以通过配置修改进行缓存切换,开发人员可按需进行配置。
本发明实施例涉及的技术术语:
Spark Catalyst:Catalyst是Spark SQL的调度核心,遵循传统数据库查询解析步骤,对sql进行解析,转换为逻辑查询计划,物理查询计划,最终转化为Spark的DAG后再执行。
Spark Catalog:数据库实例的数据库Catalog由元数据组成,其中存储了数据库对象的定义,例如基表、视图(虚拟表)、同义词、值范围、索引、用户和用户组。在Spark SQL系统中,Catalog主要用于各种函数资源信息和元数据信息(数据库、数据表、数据视图、数据分区与函数等)的统一管理。
Spark转换算子:转换算子会在一个已经存在的RDD上创建一个新的RDD,这也使得RDD之间存在了血缘关系与联系,Spark中所有的转换算子是惰性的,不会立即执行获得结果,只会记录在数据集上要应用的操作.当需要返回结果给Driver时,才会执行这些操作,这个特性叫做惰性求值。
Spark行动算子:执行各个分区的计算任务,结果返回到Driver中。每一个Action运行的时候,所关联的所有转换算子都会计算执行。
具体地,参照图1,图1为本发明物理计划生成装置所属终端设备的功能板块示意图。该物理计划生成装置可以独立于终端设备的、能够进行物理计划生成的装置,其可以通过硬件或者软件的形式承载于终端设备上。该终端设备可以为手机、平板电脑等具有数据处理功能的智能移动设备,还可以为具有数据处理功能的固定终端设备或服务器等。
在本实施例中,该物理计划生成装置所属终端设备至少包括输出模块110、处理器120、存储器130以及通信模块140。
存储器130中存储有操作系统以及物理计划生成程序,物理计划生成装置可以通过获取SQL语句集合;基于预设的子查询指令,根据所述SQL语句集合,构建数据集依赖关系;基于预先构建的全阶代码优化算法,根据所述数据集依赖关系,获得全阶物理计划。通过该物理计划生成程序计算依赖关系,生成物理计划等信息存储于该存储器130中;输出模块110可为显示屏等。通信模块140可以包括WIFI模块、移动通信模块以及蓝牙模块等,通过通信模块140与外部设备或服务器进行通信。
其中存储器130中的物理计划生成程序被处理器执行时实现以下步骤:
获取SQL语句集合;
基于预设的子查询指令,根据所述SQL语句集合,构建数据集依赖关系;
基于预先构建的全阶代码优化算法,根据所述数据集依赖关系,获得全阶物理计划。
进一步地,存储器130中的物理计划生成程序被处理器执行时还实现以下步骤:
根据所述数据集依赖关系,构建SQL语句依赖关系;
基于所述全局代码优化算法,根据所述数据集依赖关系,构建全局数据集依赖关系;
通过SQL语句中的插入语句,根据所述SQL语句依赖关系和所述全局数据集依赖关系,生成所述全阶物理计划。
进一步地,存储器130中的物理计划生成程序被处理器执行时还实现以下步骤:
根据所述SQL语句依赖关系,构建全阶批处理执行计划;
通过所述插入语句调用预设的优化器,根据所述全局数据集依赖关系对全阶批处理执行计划进行优化,生成所述全阶物理计划。
进一步地,存储器130中的物理计划生成程序被处理器执行时还实现以下步骤:
基于所述子查询指令,根据所述SQL语句集合中的SQL语句,创建虚拟表;
根据所述SQL语句,获取元数据,并通过预设的数据管理接口将所述元数据注册到预设的缓存表中;
根据所述虚拟表和注册后的缓存表,构建所述数据集依赖关系。
进一步地,存储器130中的物理计划生成程序被处理器执行时还实现以下步骤:
获取缓存配置参数;
根据所述缓存配置参数,配置缓存级别和缓存方式,以供元数据注册。
进一步地,存储器130中的物理计划生成程序被处理器执行时还实现以下步骤:
通过懒执行模式,构建全流程执行计划;
根据所述全流程执行计划,构建所述全阶代码优化算法。
进一步地,存储器130中的物理计划生成程序被处理器执行时还实现以下步骤:
获取映射文件;
通过预设的解析接口,对所述映射文件进行解析,获得所述SQL语句集合。
本实施例通过上述方案,具体通过获取SQL语句集合;基于预设的子查询指令,根据所述SQL语句集合,构建数据集依赖关系;基于预先构建的全阶代码优化算法,根据所述数据集依赖关系,获得全阶物理计划。通过子查询指令和全阶代码优化算法,得出了全阶物理计划。由此,实现了SQL作业的批量执行,解决了现有技术中云上Spark集群批处理作业运行缓慢、资源占用时间长的技术问题。相较于现有技术,具有耗时短、资源消耗少的优势。
基于上述终端设备架构但不限于上述架构,提出本发明方法实施例。
参照图2,图2为本发明物理计划生成方法第一示例性实施例的流程示意图。所述物理计划生成方法包括:
步骤S101,获取SQL语句集合;
本实施例方法的执行主体是一种物理计划生成服务系统,还可以是一种物理计划生成装置,也可以是一种物理计划生成设备,本实施例以物理计划生成装置进行举例,该物理计划生成装置可以集成在具有数据处理功能的设备上。
为了解决当前云上Spark集群批处理作业运行缓慢、资源占用时间长的问题,提高SQL作业的处理效率显得尤为重要,为了实现对SQL语句的批量执行,采取以下步骤实现:
首先,设置特殊的物理计划生成装置集成在具有数据处理功能的设备上,通过物理计划生成装置能生成物理计划;
最后,通过物理计划生成装置,获取SQL语句集合。
步骤S102,基于预设的子查询指令,根据所述SQL语句集合,构建数据集依赖关系;
物理计划生成装置基于预设的子查询指令,根据所述SQL语句集合,构建数据集依赖关系,采取以下步骤实现:
首先,物理计划生成装置使用SparkSQL提供的解析器对SQL语句集合进行解析,这将把每个SQL语句转换为逻辑计划(Logical Plan)或DataFrame/Dataset的操作序列;
最后,物理计划生成装置基于子查询指令,遍历解析后的逻辑计划或操作序列,识别数据集之间的依赖关系,得到数据集依赖关系,在SQL语句中,可能存在多个表之间的关联查询、子查询以及数据集的衍生操作(如过滤、聚合等),根据这些操作,确定数据集之间的依赖关系。
步骤S103,基于预先构建的全阶代码优化算法,根据所述数据集依赖关系,获得全阶物理计划。
物理计划生成装置基于预先构建的全阶代码优化算法,根据所述数据集依赖关系,获得全阶物理计划,采取以下步骤实现:
首先,物理计划生成装置对构建的数据集依赖关系图进行深度优先遍历,通过这一过程,可以确定数据集之间的依赖顺序,从而构建全阶物理计划的执行顺序,在遍历过程中,针对每个数据集操作,选择适当的物理执行策略,例如选择合适的数据读取方式(比如扫描全部数据、使用索引等)、数据分区和分布式计算等;
最后,物理计划生成装置根据生成的初步物理计划,可以进行进一步的调整和优化,比如考虑IO开销、Shuffle操作的优化、任务调度的优化等,以获得更加高效的全阶物理计划。
参照图3,图3为本发明物理计划生成方法中SQL批处理语句的结构示意图。
Spark批量处理作业是由id分隔的单步完整sql语句构成,涉及到临时表的创建(cache table),中间过程数据的转换,与最后目标数据的插入。Sql顺序执行
参照图4和图5,图4为本发明物理计划生成方法中传统SQL框架执行的步骤图示意图,图5为本发明物理计划生成方法中SparkSQL解析的流程示意图。
传统SparkSQL框架方案中,使用Cache Table缓存表执行单步Sql存在步骤拆解过长、耗时过长的问题,单条语句被Spark Catalyst拆解为五步:
(语句1:Cache Table vt_new_dcd_sr as select rcrd_id from lw09_91.arpl_new_dcd_sr)
执行命令Execue CacheTableCommand,物理计划为未解析的关系。
执行命令Execue CreateViewCommand,物理计划为未解析的关系。
映射SQL查询字段信息,过程包括列映射与哈希聚合,物理计划已是InMemoryRelation。
执行命令Execue CacheTableCommand,该步骤由show函数触发,物理计划为未解析的关系。
本地表扫描,该步骤由show函数触发,用于返回执行结果。
经分析调试,Cache table语句结合传统的SparkSession的SQL API调用,无法正确解析其逻辑关系并不能被分析器、优化器分析与优化,导致步骤(1)(2)耗时过长,(4)(5)的show函数产生多余计算,真正有效应用优化器的步骤仅为(3)的列映射,产生了CacheTable语句在批处理作业应用中耗时长、资源消耗大的问题。
参照图6,图6为本发明物理计划生成方法中Catalyst与CataLog的交互示意图。
SparkSQL通过Catalyst生成执行计划,Catalyst通过Catalog收集表或数据库的元数据信息对请求进行优化,Catalog主要用于各种元数据信息(临时视图、临时表、依赖关系等)的统一管理。
本实施例通过上述方案,通过获取SQL语句集合;基于预设的子查询指令,根据所述SQL语句集合,构建数据集依赖关系;基于预先构建的全阶代码优化算法,根据所述数据集依赖关系,获得全阶物理计划。通过子查询指令和全阶代码优化算法,得出了全阶物理计划。由此,实现了SQL作业的批量执行,解决了现有技术中云上Spark集群批处理作业运行缓慢、资源占用时间长的技术问题。相较于现有技术,具有耗时短、资源消耗少的优势。
参照图7,图7为本发明物理计划生成方法第二示例性实施例的流程示意图。
基于上述第一示例性实施例,所述步骤S103,基于预先构建的全阶代码优化算法,根据所述数据集依赖关系,获得全阶物理计划可以包括:
步骤S1031,根据所述数据集依赖关系,构建SQL语句依赖关系;
步骤S1032,基于所述全局代码优化算法,根据所述数据集依赖关系,构建全局数据集依赖关系;
步骤S1033,通过SQL语句中的插入语句,根据所述SQL语句依赖关系和所述全局数据集依赖关系,生成所述全阶物理计划。
具体地,物理计划生成装置基于预先构建的全阶代码优化算法,根据所述数据集依赖关系,获得全阶物理计划,采取以下步骤实现:
首先,物理计划生成装置对每个SQL语句进行解析,将其转换为逻辑计划或操作序列,这可以使用SparkSQL或其他类似的引擎来实现,再将每个SQL操作及其输入输出数据集之间的依赖关系组织成有向图的形式,生成SQL语句依赖关系,每个SQL操作作为图中的节点,依赖关系则表示为节点之间的边,这样就能清晰地描述SQL语句之间的依赖关系;
然后,物理计划生成装置基于全局代码优化算法,根据数据集依赖关系,构建全局数据集依赖关系;
最后,物理计划生成装置基于步骤S1031中构建的SQL语句依赖关系图,对插入语句按照依赖关系进行排序,确保每个SQL语句在它所依赖的SQL语句执行完毕之后再执行,再基于步骤S1032中创建的全局数据集依赖关系图,对插入语句按照数据集依赖关系进行排序,确保每个插入语句在其所依赖的数据集准备完成之后再执行,根据排序后的插入语句,生成全阶物理计划。
本实施例通过上述方案,具体通过根据所述数据集依赖关系,构建SQL语句依赖关系;基于所述全局代码优化算法,根据所述数据集依赖关系,构建全局数据集依赖关系;通过SQL语句中的插入语句,根据所述SQL语句依赖关系和所述全局数据集依赖关系,生成所述全阶物理计划。基于全阶代码优化算法,根据数据集依赖关系,获得了全阶物理计划。由此,得到了全阶物理计划,实现了SQL作业的批量执行,解决了现有技术中云上Spark集群批处理作业运行缓慢、资源占用时间长的技术问题。相较于现有技术,具有耗时短、资源消耗少的优势。
参照图8,图8为本发明物理计划生成方法第三示例性实施例的流程示意图。
基于上述第二示例性实施例,所述步骤S1033,通过SQL语句中的插入语句,根据所述SQL语句依赖关系和所述全局数据集依赖关系,生成所述全阶物理计划可以包括:
步骤S10331,根据所述SQL语句依赖关系,构建全阶批处理执行计划;
步骤S10332,通过所述插入语句调用预设的优化器,根据所述全局数据集依赖关系对全阶批处理执行计划进行优化,生成所述全阶物理计划。
具体地,物理计划生成装置通过SQL语句中的插入语句,根据SQL语句依赖关系和全局数据集依赖关系,生成全阶物理计划,采取以下步骤实现:
首先,物理计划生成装置在构建批处理执行计划时,需要仔细分析各个SQL语句之间的依赖关系,以确定哪些SQL语句可以并行执行。这样可以最大程度地提高整体作业的执行效率,根据SQL语句的依赖关系,确定它们的执行顺序,生成全阶批处理执行计划,通常情况下,被依赖的SQL语句需要在依赖的SQL语句执行完毕后才能执行,执行计划应该清晰地描述每个SQL操作的执行顺序、可能的并行执行机会以及优化策略;
最后,物理计划生成装置通过插入语句调用预设的优化器,优化器根据全局数据集依赖关系对生成的全阶批处理执行计划进行优化,这可能涉及选择合适的连接方式、调整操作的执行顺序、选择合适的并行度等,基于优化后的执行计划,生成全阶物理计划,物理计划应该包括具体的执行方式、操作的顺序、并行度等信息。
参照图9,图9为本发明物理计划生成方法中SparkSQL全阶物理计划构成的示意图。
本实施例在懒执行模式中,Spark CataLyst应用WSCG(WholeStage Codegen)全阶代码优化合并存在dataset依赖关系的Sql语句,可构建全阶批处理执行计划,并在最后由一个行动算子触发执行。全阶计划可被Catalyst优化并生成最优物理执行计划,一次执行,避免了中间其他冗余执行步骤或浪费资源的缓存步骤。
在懒执行模式中,执行器应用全阶代码优化(WSCG)连接所有单条Sql语句命令并构建依赖关系,在最后一条Sql命令构建完成后,通过行动算子触发执行,达到一次构建,全阶执行的高效执行方式。
本实施例通过上述方案,具体通过根据所述SQL语句依赖关系,构建全阶批处理执行计划;通过所述插入语句调用预设的优化器,根据所述全局数据集依赖关系对全阶批处理执行计划进行优化,生成所述全阶物理计划。通过SQL语句中的插入语句,根据SQL语句依赖关系和全局数据集依赖关系,生成了全阶物理计划。由此,得到了全阶物理计划,实现了SQL作业的批量执行,解决了现有技术中云上Spark集群批处理作业运行缓慢、资源占用时间长的技术问题。相较于现有技术,具有耗时短、资源消耗少的优势。
参照图10,图10为本发明物理计划生成方法第四示例性实施例的流程示意图。
基于上述第一示例性实施例,所述步骤S102,基于预设的子查询指令,根据所述SQL语句集合,构建数据集依赖关系可以包括:
步骤S1021,基于所述子查询指令,根据所述SQL语句集合中的SQL语句,创建虚拟表;
步骤S1022,根据所述SQL语句,获取元数据,并通过预设的数据管理接口将所述元数据注册到预设的缓存表中;
步骤S1023,根据所述虚拟表和注册后的缓存表,构建所述数据集依赖关系。
具体地,物理计划生成装置基于预设的子查询指令,根据SQL语句集合,构建数据集依赖关系,采取以下步骤实现:
首先,物理计划生成装置执行子查询指令,识别在所述SQL语句集合中哪些查询是子查询,需要将其结果存储在虚拟表中供后续查询使用,即创建虚拟表并将子查询的结果存储其中;
其次,物理计划生成装置对给定的SQL语句进行解析,以提取其中的元数据信息,这包括表名、列名、索引信息等,再根据解析得到的表名、列名等信息,通过预设的接口或系统自带的元数据管理工具,从数据库系统中获取相应的元数据信息,元数据信息可包括表的结构、列的类型、索引信息等,根据获取到的元数据信息,将其注册到预设的缓存表中,缓存表可以是一个专门用于存储元数据的表,用于提高查询的效率和性能;
最后,物理计划生成装置根据虚拟表和缓存表的内容,识别数据集之间的依赖关系,得到数据集依赖关系,这包括哪些数据集的生成依赖于其他数据集,以及它们之间的关联关系,再建立一个清晰的数据集依赖关系图,用于展示不同数据集之间的依赖关系和关联路径,这可以是一个逻辑图或者数据流程图,用于直观地展示数据集之间的关系。
参照图11,图11为本发明物理计划生成方法中新框架批处理Spark Catalyst解析的流程示意图。
SparkSQL新框架在执行批处理命令时,与之前旧方案的五步相比,单条Sql仅被拆分成两个步骤:
1)临时视图创建,元数据注册,构建dataset依赖关系。
2)全阶代码优化:本地表字段映射后构建全局dataset依赖关系。
经分析调试发现,因为Cache Table命令本身就可作为单独的行动算子执行,不需要额外的行动算子(如show函数)触发。另外Cache Table命令在SparkSQL API中不能被正确解析,使其从CataLog(Spark元数据管理)中不能获取有效信息,从而导致未解析关系。新方案舍弃了cache table命令和show函数行动算子后,整个过程不涉及ExecuteCacheTableCommand与多余重复的临时表创建与本地表扫描步骤,使最终步骤减少为了两个。
本实施例通过上述方案,具体通过基于所述子查询指令,根据所述SQL语句集合中的SQL语句,创建虚拟表;根据所述SQL语句,获取元数据,并通过预设的数据管理接口将所述元数据注册到预设的缓存表中;根据所述虚拟表和注册后的缓存表,构建所述数据集依赖关系。基于预设的子查询指令,根据SQL语句集合,构建了数据集依赖关系。由此,得到了数据集依赖关系,为生成物理计划提供了支持。
参照图12,图12为本发明物理计划生成方法第五示例性实施例的流程示意图。
基于上述第四示例性实施例,所述步骤S1022,根据所述SQL语句,获取元数据,并通过预设的数据管理接口将所述元数据注册到预设的缓存表中之前,可以包括:
步骤S1025,获取缓存配置参数;
步骤S1026,根据所述缓存配置参数,配置缓存级别和缓存方式,以供元数据注册。
具体地,采取以下步骤实现:
首先,物理计划生成装置获取缓存配置参数;
最后,物理计划生成装置根据所述缓存配置参数,配置缓存级别和缓存方式,以供元数据注册。
参照图13、图14和图15,图13为本发明物理计划生成方法中缓存级别的对比示意图,图14为本发明物理计划生成方法中临时表缓存方式的内容示意图,图15为本发明物理计划生成方法中临时视图缓存方式的内容示意图。
框架默认使用内存缓存级别,若集群资源紧张造成内存不足,可切换为内存磁盘双写或内存序列化等缓存级别。临时表缓存模式可在Spark Web UI页面展示单步临时表的缓存详细信息;临时视图缓存模式可在该页面展示单步详细计划,方便后续运维。
本实施例通过上述方案,具体通过获取缓存配置参数;根据所述缓存配置参数,配置缓存级别和缓存方式,以供元数据注册。根据缓存配置参数,配置了缓存级别和缓存方式。由此,配置了缓存级别和缓存方式,为数据的注册和缓存提供了支持。
参照图16,图16为本发明物理计划生成方法第六示例性实施例的流程示意图。
基于上述第一示例性实施例,所述步骤S103,基于预先构建的全阶代码优化算法,根据所述数据集依赖关系,获得全阶物理计划之前,可以包括:
步骤S1041,通过懒执行模式,构建全流程执行计划;
步骤S1042,根据所述全流程执行计划,构建所述全阶代码优化算法。
具体地,采取以下步骤实现:
首先,物理计划生成装置通过懒执行模式,构建全流程执行计划;
最后,物理计划生成装置根据全流程执行计划,构建全阶代码优化算法,可充分应用Spark Catalyst,使批处理作业达到运行效率最大化。
其中,基于Spark Catalyst与Spark Catalog的批量作业全阶计划生成、一次执行的懒执行模式,抛弃原有的Cache table临时表创建方式,通过将映射中所有Sql串联构建全阶物理计划,通过行动算子一次触发执行,充分利用现有计算资源与Catalyst优化器,实现执行效率最大化,可以为后续使用cache table存在性能瓶颈的场景提供更好的解决思路。
本实施例通过上述方案,具体通过懒执行模式,构建全流程执行计划;根据所述全流程执行计划,构建所述全阶代码优化算法。通过构建的全流程执行计划,得到了全阶代码优化算法。由此,获得了全阶代码优化算法,为生成物理计划提供了支持。
参照图17,图17为本发明物理计划生成方法第七示例性实施例的流程示意图。
基于上述第一示例性实施例,所述步骤S101,获取SQL语句集合可以包括:
步骤S1011,获取映射文件;
步骤S1012,通过预设的解析接口,对所述映射文件进行解析,获得所述SQL语句集合。
具体地,采取以下步骤实现:
首先,物理计划生成装置获取映射文件;
最后,物理计划生成装置通过预设的解析接口,对映射文件进行解析,获得SQL语句集合。
本实施例通过上述方案,具体通过获取映射文件;通过预设的解析接口,对所述映射文件进行解析,获得所述SQL语句集合。通过解析映射文件,得到了SQL语句集合。由此,获得了SQL语句集合,为构建数据集依赖关系提供了支持。
作为另一种示例性实施例,本实施例可以通过物理计划生成装置生成物理计划,该物理计划生成方法的流程如图18所示:
首先,物理计划生成装置获取批量SQL语句;
然后,物理计划生成装置基于预设的子查询指令,根据批量SQL语句,构建数据集依赖关系;
最后,物理计划生成装置基于预先构建的全阶代码优化算法,根据数据集依赖关系,获得全阶物理计划。
参照图19、图20和图21,图19为本发明物理计划生成方法中催收客户综合评分的加工流程示意图,图20为本发明物理计划生成方法中SparkSQL传统方案cache table临时表的加工流程示意图,图21为本发明物理计划生成方法中SparkSQL新方案临时表依赖的构建流程示意图。
以某金融机构贷后催收客户线上综合评分指标为例,该评分以满足催收规则的客户为维度,通过客户背景、客户贷款、客户账单三个子指标评分之和作为最终客户评分,最后关联写入目标表,以满足下游决策树以评分做催收分组筛选。
在传统方案使用cache table加工数据作业时,cache table在立即执行临时表创建与数据插入后,并没有构建出与下游依赖有效的RDD关系图,导致了图中(3)的问题。图中总共涉及4张临时表,总共需要5*4=20个步骤才能将结果写入vt_cust_all_scr表中,最后再将结果插入到目标表。该方案存在着语句拆解步骤过长、RDD依赖构建关系单一、冗余临时表无法及时释放等问题,当冗余临时表占用空间过大至内存不足时,Spark将持久化部分临时表到磁盘上以释放足够内存用于执行后续步骤,由于缺乏完整的RDD依赖关系,若释放的临时表恰好是需要关联使用的源表时,Spark将会持久化并释放其他临时表内存,再从磁盘读取该表数据,导致执行语句耗时过长。
新方案通过使用映射语句+persist+临时视图构建方式,应用懒执行模式,不实际执行当前步骤的sql,仅保留sql语句在内存中解析的依赖关系,新方案单步sql仅涉及两个执行步骤(映射+临时视图构建),在懒执行模式中,在每一步都保留有该步和该步有依赖关系的子步骤的所有RDD依赖关系图谱,直到最后一步插入语句,总共仅涉及8个步骤完成所有临时表的关系构建。Spark Catalyst优化器在获取了整个作业完整的表依赖关系图谱前提下,通过插入语句触发一次执行,生成最优物理计划树,执行过程中优化器根据依赖关系图谱、Spark内存占用情况与临时表使用情况做出优化,达到全阶物理计划生成+一次执行的效果。
本实施例通过上述方案,具体通过获取SQL语句集合;基于预设的子查询指令,根据所述SQL语句集合,构建数据集依赖关系;基于预先构建的全阶代码优化算法,根据所述数据集依赖关系,获得全阶物理计划。通过子查询指令和全阶代码优化算法,得出了全阶物理计划。由此,实现了SQL作业的批量执行,解决了现有技术中云上Spark集群批处理作业运行缓慢、资源占用时间长的技术问题。相较于现有技术,具有耗时短、资源消耗少的优势。
此外,本发明还提供一种物理计划生成装置,所述物理计划生成装置包括:
语句获取模块,用于获取SQL语句集合;
关系构建模块,用于基于预设的子查询指令,根据所述SQL语句集合,构建数据集依赖关系;
计划生成模块,用于基于预先构建的全阶代码优化算法,根据所述数据集依赖关系,获得全阶物理计划。
本实施例实现物理计划生成的原理请参照上述各实施例,在此不再赘述。
此外,本发明实施例还提出一种终端设备,所述终端设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的物理计划生成程序,所述物理计划生成程序被所述处理器执行时实现如上所述的物理计划生成方法的步骤。
由于物理计划生成程序被处理器执行时,采用了前述所有实施例的全部技术方案,因此至少具有前述所有实施例的全部技术方案所带来的所有有益效果,在此不再一一赘述。
本发明实施例还提出一种计算器可读存储介质,所述计算机可读存储介质上存储有物理计划生成程序,所述物理计划生成程序被处理器执行时实现如上所述的物理计划生成方法的步骤。
由于本物理计划生成程序被处理器执行时,采用了前述所有实施例的全部技术方案,因此至少具有前述所有实施例的全部技术方案所带来的所有有益效果,在此不再一一赘述。
相比现有技术,本发明实施例提出的物理计划生成方案,基于SparkSQL执行原理,在批处理作业中,将传统的批量作业单步执行、单步缓存的低效率执行转换为批量执行、全阶计划生成的高时效执行,相对以前传统的SparkSQL执行方式,同等配置下运行性能提升了3到6倍。该方案充分应用Catalyst优化器,正确解析批处理作业中每一步sql语句,生成物理计划树。同时提供了多种可供选择的缓存级别切换,满足多运行场景。提供缓存级别自由切换;应用懒执行模式,适用于高时效性链路作业;提供DataSet缓存与临时表缓存两种方式,为开发运维人员提供多角度的分析视角。
本发明实施例解决了云上Spark集群批处理作业运行缓慢、资源占用时间长等关键问题,以更少的运行资源与更少的运行耗时完成了同等体量的作业,对HDFS集群稳定性有促进作用。方案通过解决传统SparkSql处理Cache Table引发的未解析关系问题,对Spark Sql的有效拆解使其解析器能够有效识别单步sql的逻辑关系,并应用Catalyst实现合理优化与执行,实现SparkSQL全阶执行计划生成。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,被控终端,或者网络设备等)执行本发明每个实施例的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (10)

1.一种物理计划生成方法,其特征在于,所述物理计划生成方法包括以下步骤:
获取SQL语句集合;
基于预设的子查询指令,根据所述SQL语句集合,构建数据集依赖关系;
基于预先构建的全阶代码优化算法,根据所述数据集依赖关系,获得全阶物理计划。
2.如权利要求1所述的物理计划生成方法,其特征在于,所述基于预先构建的全阶代码优化算法,根据所述数据集依赖关系,获得全阶物理计划的步骤包括:
根据所述数据集依赖关系,构建SQL语句依赖关系;
基于所述全局代码优化算法,根据所述数据集依赖关系,构建全局数据集依赖关系;
通过SQL语句中的插入语句,根据所述SQL语句依赖关系和所述全局数据集依赖关系,生成所述全阶物理计划。
3.如权利要求2所述的物理计划生成方法,其特征在于,所述通过SQL语句中的插入语句,根据所述SQL语句依赖关系和所述全局数据集依赖关系,生成所述全阶物理计划的步骤包括:
根据所述SQL语句依赖关系,构建全阶批处理执行计划;
通过所述插入语句调用预设的优化器,根据所述全局数据集依赖关系对全阶批处理执行计划进行优化,生成所述全阶物理计划。
4.如权利要求1所述的物理计划生成方法,其特征在于,所述基于预设的子查询指令,根据所述SQL语句集合,构建数据集依赖关系的步骤包括:
基于所述子查询指令,根据所述SQL语句集合中的SQL语句,创建虚拟表;
根据所述SQL语句,获取元数据,并通过预设的数据管理接口将所述元数据注册到预设的缓存表中;
根据所述虚拟表和注册后的缓存表,构建所述数据集依赖关系。
5.如权利要求4所述的物理计划生成方法,其特征在于,所述根据所述SQL语句,获取元数据,并通过预设的数据管理接口将所述元数据注册到预设的缓存表中的步骤之前,还包括:
获取缓存配置参数;
根据所述缓存配置参数,配置缓存级别和缓存方式,以供元数据注册。
6.如权利要求1所述的物理计划生成方法,其特征在于,所述基于预先构建的全阶代码优化算法,根据所述数据集依赖关系,获得全阶物理计划的步骤之前,还包括:
通过懒执行模式,构建全流程执行计划;
根据所述全流程执行计划,构建所述全阶代码优化算法。
7.如权利要求1所述的物理计划生成方法,其特征在于,所述获取SQL语句集合的步骤包括:
获取映射文件;
通过预设的解析接口,对所述映射文件进行解析,获得所述SQL语句集合。
8.一种物理计划生成装置,其特征在于,所述物理计划生成装置包括:
语句获取模块,用于获取SQL语句集合;
关系构建模块,用于基于预设的子查询指令,根据所述SQL语句集合,构建数据集依赖关系;
计划生成模块,用于基于预先构建的全阶代码优化算法,根据所述数据集依赖关系,获得全阶物理计划。
9.一种终端设备,其特征在于,所述终端设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的物理计划生成程序,所述物理计划生成程序被所述处理器执行时实现如权利要求1-7中任一项所述的物理计划生成方法的步骤。
10.一种计算器可读存储介质,其特征在于,所述计算机可读存储介质上存储有物理计划生成程序,所述物理计划生成程序被处理器执行时实现如权利要求1-7中任一项所述的物理计划生成方法的步骤。
CN202311523767.8A 2023-11-14 2023-11-14 物理计划生成方法、装置、设备及存储介质 Pending CN117591533A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311523767.8A CN117591533A (zh) 2023-11-14 2023-11-14 物理计划生成方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311523767.8A CN117591533A (zh) 2023-11-14 2023-11-14 物理计划生成方法、装置、设备及存储介质

Publications (1)

Publication Number Publication Date
CN117591533A true CN117591533A (zh) 2024-02-23

Family

ID=89910704

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311523767.8A Pending CN117591533A (zh) 2023-11-14 2023-11-14 物理计划生成方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN117591533A (zh)

Similar Documents

Publication Publication Date Title
JP7130600B2 (ja) ファーストクラスデータベース要素としての半構造データの実装
JP6617117B2 (ja) 半構造データのためのスケーラブルな分析プラットフォーム
CN112905595A (zh) 一种数据查询方法、装置及计算机可读存储介质
CN103064875B (zh) 一种服务化空间数据分布式查询方法
US8572575B2 (en) Debugging a map reduce application on a cluster
US8903841B2 (en) System and method of massively parallel data processing
US9495427B2 (en) Processing of data using a database system in communication with a data processing framework
US7711704B2 (en) System and method of providing date, arithmetic and other relational functions for OLAP sources
US20140279838A1 (en) Scalable Analysis Platform For Semi-Structured Data
CN105677812A (zh) 一种数据查询方法及数据查询装置
Sellami et al. Complex queries optimization and evaluation over relational and NoSQL data stores in cloud environments
Samwel et al. F1 query: Declarative querying at scale
Sinthong et al. Aframe: Extending dataframes for large-scale modern data analysis
CN117349368A (zh) 基于Flink的跨库数据实时同步任务管理系统及方法
Sinthong et al. AFrame: Extending DataFrames for large-scale modern data analysis (Extended Version)
CN117131230A (zh) 数据血缘分析方法、装置、设备及存储介质
CN113836164A (zh) 统一sql的方法、系统、设备及介质
Sarkar et al. MapReduce: A comprehensive study on applications, scope and challenges
CN117591533A (zh) 物理计划生成方法、装置、设备及存储介质
Bidoit et al. Evaluating queries and updates on big xml documents
Cappellari et al. Optimizing data stream processing for large‐scale applications
CN113590651A (zh) 一种基于hql的跨集群数据处理系统及方法
Valvag et al. Cogset vs. hadoop: Measurements and analysis
Sinthong A Retargetable Query-Based Approach to Scaling Dataframes
CN117891827A (zh) 数据处理方法、数据处理装置以及计算机存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination