CN113297212A - 一种基于物化视图的Spark查询方法、装置及电子设备 - Google Patents

一种基于物化视图的Spark查询方法、装置及电子设备 Download PDF

Info

Publication number
CN113297212A
CN113297212A CN202110470051.0A CN202110470051A CN113297212A CN 113297212 A CN113297212 A CN 113297212A CN 202110470051 A CN202110470051 A CN 202110470051A CN 113297212 A CN113297212 A CN 113297212A
Authority
CN
China
Prior art keywords
sub
query
logical plan
module
logicalplan
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
CN202110470051.0A
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.)
Shanghai Qiyue Information Technology Co Ltd
Original Assignee
Shanghai Qiyue Information Technology 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 Shanghai Qiyue Information Technology Co Ltd filed Critical Shanghai Qiyue Information Technology Co Ltd
Priority to CN202110470051.0A priority Critical patent/CN113297212A/zh
Publication of CN113297212A publication Critical patent/CN113297212A/zh
Pending legal-status Critical Current

Links

Images

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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • 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/24553Query execution of query operations

Landscapes

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

Abstract

本发明公开了一种基于物化视图的Spark查询方法、装置及电子设备,所述方法包括:接收查询语句;将所述查询语句解析为解析器引擎Catalyst中的逻辑计划Logical Plan;将所述Logical Plan与已注册的物化视图进行匹配;若所述Logical Plan能匹配到已注册的物化视图,改写所述Logical Plan;根据改写后的Logical Plan进行查询。本发明基于Spark架构,预先将物化视图注册到Spark内存中,通过物化视图预先计算并保存指定操作的预计算结果。在用户提交查询语句时,将查询语句解析为解析器引擎Catalyst中的Logical Plan;将所述Logical Plan与已注册的物化视图进行匹配;选出Logical Plan能匹配到的已注册物化视图改写所述Logical Plan;从而通过已注册物化视图的预计算结果来加速查询,提升数据访问效率。

Description

一种基于物化视图的Spark查询方法、装置及电子设备
技术领域
本发明涉及数据处理技术领域,具体而言,涉及一种基于物化视图的Spark查询方法、装置、电子设备及计算机可读介质。
背景技术
近年来,随着互联网技术的飞速发展,数据产生的速度越来越快,体量也越来越大。为了提供TB级别大数据的查询,主要采用spark架构来大规模并行处理数据。
但是,随着数据量的继续增加,spark集群的计算速度在不断的下降。一段SparkSQL查询中可能包含多个表链接或聚合等耗时较多的操作,导致SQL查询时效等不到保证。
发明内容
本发明旨在解决现有包含多个表链接或聚合等耗时操作的Spark SQL查询时效低的技术问题。
为了解决上述技术问题,本发明第一方面提出一种基于物化视图的Spark查询方法,所述方法包括:
接收查询语句;
将所述查询语句解析为解析器引擎Catalyst中的逻辑计划Logical Plan;
将所述Logical Plan与已注册的物化视图进行匹配;
若所述Logical Plan能匹配到已注册的物化视图,改写所述Logical Plan;
根据改写后的Logical Plan进行查询。
根据本发明一种优选的实施方式,所述将所述Logical Plan与已注册的物化视图进行匹配包括:
根据查询语句的复杂源将所述Logical Plan解析为只包含Logical Plan单元的Logical Plan集合;
将所述Logical Plan集合与所述已注册物化视图进行匹配。
根据本发明一种优选的实施方式,所述查询语句的复杂源包括:子查询;所述将所述Logical Plan解析为只包含Logical Plan单元的Logical Plan集合包括:
提取查询语句分中的子查询形成子查询树结构;
根据所述子查询树结构获取该查询语句中的所有子查询;
获取所有子查询对应的Logical Plan单元形成Logical Plan集合;
所述根据所述子查询树结构获取该查询语句中的所有子查询包括:
S1、判断所述子查询树结构是否存在包含子查询的第一叶子节点;
S2、若存在包含子查询的第一叶子节点,提取第一叶子节点的子查询形成新的子查询树结构;
S3、重复步骤S1~S2,直至最新的子查询树结构中所有叶子节点不包含子查询为止,将所述子查询树结构中的子查询作为该查询语句中的所有子查询。
根据本发明一种优选的实施方式,所述查询语句的复杂源还包括:连接Join操作;所述Logical Plan集合还包括Join操作对应的Logical Plan单元。
根据本发明一种优选的实施方式,每个Logical Plan单元对应一个已注册视图的匹配器,所述将所述Logical Plan集合与所述已注册物化视图进行匹配包括:
将所述Logical Plan集合中的每个Logical Plan单元与对应的匹配器进行匹配;
若所述Logical Plan集合中的每个Logical Plan单元与对应的匹配器匹配成功,确定所述Logical Plan集合能匹配到已注册的物化视图。
根据本发明一种优选的实施方式,每个Logical Plan单元对应一个改写器,通过每个改写器改写对应的Logical Plan单元;
其中,Join操作对应的改写器通过物化视图替换Join操作。
根据本发明一种优选的实施方式,所述物化视图由生成视图的结构化查询语言SQL和数据组成,所述方法还包括:
获取生成视图的SQL,并将所述生成视图的SQL注册为物化视图,
存储物化视图的数据;
响应于更新指令,根据源数据更新已存储的物化视图数据。
为了解决上述技术问题,本发明第二方面提供一种基于物化视图的Spark查询装置,所述装置包括:
接收模块,用于接收查询语句;
解析模块,用于将所述查询语句解析为解析器引擎Catalyst中的逻辑计划Logical Plan;
匹配模块,用于将所述Logical Plan与已注册的物化视图进行匹配;
改写模块,用于若所述Logical Plan能匹配到已注册的物化视图,改写所述Logical Plan;
查询模块,用于根据改写后的Logical Plan进行查询。
根据本发明一种优选的实施方式,所述匹配模块包括:
第一解析模块,用于根据查询语句的复杂源将所述Logical Plan解析为只包含Logical Plan单元的Logical Plan集合;
子匹配模块,用于将所述Logical Plan集合与所述已注册物化视图进行匹配。
根据本发明一种优选的实施方式,所述查询语句的复杂源包括:子查询;所述第一解析模块包括:
提取模块,用于提取查询语句分中的子查询形成子查询树结构;
第一获取模块,用于根据所述子查询树结构获取该查询语句中的所有子查询;
第二获取模块,用于获取所有子查询对应的Logical Plan单元形成Logical Plan集合;
其中,所述第一获取模块包括:
判断模块,用于判断所述子查询树结构是否存在包含子查询的第一叶子节点;
子提取模块,用于若存在包含子查询的第一叶子节点,提取第一叶子节点的子查询形成新的子查询树结构;
循环模块,用于控制所述判断模块和所述子提取模块循环执行,直至最新的子查询树结构中所有叶子节点不包含子查询为止,将所述子查询树结构中的子查询作为该查询语句中的所有子查询。
根据本发明一种优选的实施方式,所述查询语句的复杂源还包括:连接Join操作;所述Logical Plan集合还包括Join操作对应的Logical Plan单元。
根据本发明一种优选的实施方式,每个Logical Plan单元对应一个已注册视图的匹配器,所述子匹配模块包括:
第一匹配模块,用于将所述Logical Plan集合中的每个Logical Plan单元与对应的匹配器进行匹配;
确定模块,用于若所述Logical Plan集合中的每个Logical Plan单元与对应的匹配器匹配成功,确定所述Logical Plan集合能匹配到已注册的物化视图。
根据本发明一种优选的实施方式,每个Logical Plan单元对应一个改写器,所述改写模块通过每个改写器改写对应的Logical Plan单元;
其中,Join操作对应的改写器通过物化视图替换Join操作。
根据本发明一种优选的实施方式,所述物化视图由生成视图的结构化查询语言SQL和数据组成,所述装置还包括:
获取模块,用于获取生成视图的SQL,并将所述生成视图的SQL注册为物化视图,
存储模块,用于存储物化视图的数据;
更新模块,用于响应于更新指令,根据源数据更新已存储的物化视图数据。
为解决上述技术问题,本发明第四方面提供一种电子设备,包括:
处理器;以及
存储计算机可执行指令的存储器,所述计算机可执行指令在被执行时使所述处理器执行上述的方法。
为解决上述技术问题,本发明第五方面提供一种计算机可读存储介质,其中,所述计算机可读存储介质存储一个或多个程序,当所述一个或多个程序被处理器执行时,实现上述方法。
本发明基于Spark架构,预先将物化视图注册到Spark内存中,通过物化视图预先计算并保存指定操作(比如表链接、聚合等操作)的预计算结果。在用户提交查询语句时,将查询语句解析为解析器引擎Catalyst中的Logical Plan;将所述Logical Plan与已注册的物化视图进行匹配;选出Logical Plan能匹配到的已注册物化视图改写所述LogicalPlan;从而通过已注册物化视图的预计算结果来加速查询,提升数据访问效率。相较于现有技术,本发明至少具有以下有益效果:
1、通过本发明,用户只需预先将物化视图注册到Spark内存中,给定一条查询语句,就能对语句进行解析并从已注册物化视图中选出可用的预计算结果来加速查询,让数据适配计算,从而最大限度的提升计算效率。
2、本发明对用户完全透明,用户无需阅读源码或理解内部工作机制的细节,可自动对查询语句匹配合适的物化视图,自动改写。
附图说明
为了使本发明所解决的技术问题、采用的技术手段及取得的技术效果更加清楚,下面将参照附图详细描述本发明的具体实施例。但需声明的是,下面描述的附图仅仅是本发明的示例性实施例的附图,对于本领域的技术人员来讲,在不付出创造性劳动的前提下,可以根据这些附图获得其他实施例的附图。
图1是本发明实施例一种基于物化视图的Spark查询方法的流程示意图;
图2a~2b是本发明实施例的两种解析器引擎Catalyst执行基于物化视图的Spark查询方法的流程示意图;
图3是本发明实施例中Plan Rewrite模块对SQL查询语句进行匹配改写的示意图;
图4是本发明实施例一种基于物化视图的Spark查询装置的结构框架示意图;
图5是根据本发明的一种电子设备的示例性实施例的结构框图;
图6是本发明一种计算机可读介质实施例的示意图。
具体实施方式
现在将参考附图来更加全面地描述本发明的示例性实施例,虽然各示例性实施例能够以多种具体的方式实施,但不应理解为本发明仅限于在此阐述的实施例。相反,提供这些示例性实施例是为了使本发明的内容更加完整,更加便于将发明构思全面地传达给本领域的技术人员。
在符合本发明的技术构思的前提下,在某个特定的实施例中描述的结构、性能、效果或者其他特征可以以任何合适的方式结合到一个或更多其他的实施例中。
在对于具体实施例的介绍过程中,对结构、性能、效果或者其他特征的细节描述是为了使本领域的技术人员对实施例能够充分理解。但是,并不排除本领域技术人员可以在特定情况下,以不含有上述结构、性能、效果或者其他特征的技术方案来实施本发明。
附图中的流程图仅是一种示例性的流程演示,不代表本发明的方案中必须包括流程图中的所有的内容、操作和步骤,也不代表必须按照图中所显示的的顺序执行。例如,流程图中有的操作/步骤可以分解,有的操作/步骤可以合并或部分合并,等等,在不脱离本发明的发明主旨的情况下,流程图中显示的执行顺序可以根据实际情况改变。
附图中的框图一般表示的是功能实体,并不一定必然与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
各附图中相同的附图标记表示相同或类似的元件、组件或部分,因而下文中可能省略了对相同或类似的元件、组件或部分的重复描述。还应理解,虽然本文中可能使用第一、第二、第三等表示编号的定语来描述各种器件、元件、组件或部分,但是这些器件、元件、组件或部分不应受这些定语的限制。也就是说,这些定语仅是用来将一者与另一者区分。例如,第一器件亦可称为第二器件,但不偏离本发明实质的技术方案。此外,术语“和/或”、“及/或”是指包括所列出项目中的任一个或多个的所有组合。
本发明实施例中,物化视图是包括一个查询结果的数据库对象,它是远程数据的本地副本,或者用来生成基于数据表求和的汇总表。物化视图可以存储基于远程表的数据。
Spark是专为大规模数据处理而设计的快速通用的分布式内存计算引擎。
Catalyst是Spark原生的解析器引擎。Catalyst的整个工作流程,包括Parser阶段、Analyzer阶段、Optimize阶段以及Physical Planning阶段。SQL语句首先通过Parser解析模块被解析为语法树,此棵树称为Unresolved Logical Plan(未绑定的逻辑计划);Unresolved Logical Plan通过Analyzer分析模块借助于原数据解析为Logical Plan(逻辑计划);此时再通过Optimizer优化模块基于各种规则的优化策略进行深入优化,得到Optimized Logical Plan(优化的逻辑计划);Optimized Logical Plan需要转换为Physical Plan(物理计划),才能被Spark系统理解。
请参阅图1,图1是本发明提供的一种基于物化视图的Spark查询方法的流程图。如图1所示,所述方法包括:
S1、接收查询语句;
其中,所述查询语句可以是SQL(Structure Query Language,结构化查询语言)查询语句。其中,SQL是一种在关系型数据库中定义和操纵数据的标准语言。用户可以从前端直接输入该查询语句。
S2、将所述查询语句解析为解析器引擎Catalyst中的逻辑计划Logical Plan;
本发明实施例在Spark框架中基于物化视图改写Catalyst的引擎实现。如图2a所示,本发明实施例的解析器引擎Catalyst包括:依次连接的Parser模块、Analyzer模块、Plan Rewrite改写模块、Optimizer模块和Physical Planning实体规划模块。其中:
Parser模块将SQL语句解析为语法树;
Analyzer模块将所述语法树解析为逻辑计划Logical Plan;
Plan Rewrite模块将所述Logical Plan与已注册的物化视图进行匹配;若所述Logical Plan能匹配到已注册的物化视图,改写所述Logical Plan;
Optimizer模块对改写后的Logical Plan进行优化;
Physical Planning模块将优化后的Logical Plan转换为Physical Plan。
如图2a~2b所示,SQL语句首先通过Parser模块被解析为语法树,此棵树称为Unresolved Logical Plan;Unresolved Logical Plan通过Analyzer模块借助于原数据解析为Logical Plan。其中,Unresolved Logical Plan根据用户查询语句不同,会有较大区别。因此,本发明实施例可以如图2a中将Plan Rewrite模块放在Analyzer模块和Optimizer模块之间,则步骤S3、S4在对Logical Plan进行优化之前执行。当然,也可以如图2b中将Plan Rewrite模块放在Optimizer模块和Physical Planning模块之间,则步骤S3、S4在对Logical Plan进行优化之后执行。
S3、将所述Logical Plan与已注册的物化视图进行匹配;
示例性的,在本步骤之前可以预先在Spark内存中注册物化视图。所述物化视图由生成视图的结构化查询语言SQL和数据组成。记录生成视图的生成SQL,是为了记录物化视图内的数据生成逻辑,每个字段都来源表。所述注册物化视图可以包括:
S31、获取生成视图的SQL,并将所述生成视图的SQL注册为物化视图,
其中,生成视图的SQL可以存储在Hive,MYSQL等介质中,方便匹配时统一拉取介质中的SQL注册为物化视图。
S32、存储物化视图的数据;
本发明实施例中,Spark物化视图的数据优选存储在Hive中,在SQL查询语句完成匹配改写后,从Hive中拉取数据直接返回结果。
进一步的,本发明实施例还支持响应于更新指令,对已注册物化视图的更新。其中,更新方式包含全量更新和增量更新。所述更新质量可以是定时触发更新的指令,也可以是已注册物化视图的源数据发生变更时触发更新的指令。比如,在物化视图使用的源表的数据发生更改时,刷新物化视图中的数据,以便其保持最新的数据。
在一种匹配过程中,如图2a,加载Hive,MYSQL等介质中已注册的物化视图,并将其解析为Logical Plan形式的物化视图Logical Plan,以Map集合的形式存储到Spark的内存中,以减小匹配时的复杂程度。最后将物化视图Logical Plan和SQL查询语句中的LogicalPlan进行匹配。在另一中匹配过程中,如图2b,加载Hive,MYSQL等介质中已注册的物化视图,并将其解析为Logical Plan形式的物化视图Logical Plan,以Map集合的形式存储到Spark的内存中,以减小匹配时的复杂程度。对物化视图Logical Plan进行谓词下推、谓词合并等优化,最后将优化后的物化视图Logical Plan和SQL查询语句中的OptimizedLogical Plan进行匹配。
而在实际的匹配过程中,一条复杂SQL查询语句的Logical Plan里面会包含大量的子查询,如果将该复杂SQL的Logical Plan作为一个整体直接去匹配已注册物化视图的Logical Plan,会影响匹配效果。在一种示例中,为了提高匹配精度,所述将所述LogicalPlan与已注册的物化视图进行匹配可以包括:
S301、根据查询语句的复杂源将所述Logical Plan解析为只包含Logical Plan单元的Logical Plan集合;
S302、将所述Logical Plan集合与所述已注册物化视图进行匹配。
在步骤S301中,所述复杂源是引起查询复杂度的来源。在SQL查询语句中,查询源主要包括:子查询和连接Join操作。所述Logical Plan单元是最简单的Logical Plan,其可以是子查询通过Parser模块和Analyzer模块解析后得到的Logical Plan。示例性的,Logical Plan单元可以是table、aggregate、where、group、Join等对应的Logical Plan。
示例性的,对于查询语句中的子查询,所述将所述Logical Plan解析为只包含Logical Plan单元的Logical Plan集合包括:
S311、提取查询语句分中的子查询形成子查询树结构;
以SQL查询语句为例,子查询本质上是SQL内置的虚拟视图,则提取SQL里的子查询形成一个子查询树结构。
S312、根据所述子查询树结构获取该查询语句中的所有子查询;
示例性的,可以以迭代的方式获取所有子查询。首先,执行判断步骤:判断所述子查询树结构是否存在包含子查询的第一叶子节点;若存在包含子查询的第一叶子节点,执行提取步骤:提取第一叶子节点的子查询形成新的子查询树结构;重复上述判断和提取的步骤,继续迭代,直至最新的子查询树结构中所有叶子节点不包含子查询为止,将所述子查询树结构中的子查询作为该查询语句中的所有子查询。
S313、获取所有子查询对应的Logical Plan单元形成Logical Plan集合。
示例性的,可以通过Parser模块和Analyzer模块获取所有子查询对应的LogicalPlan单元,最终形成一个只包含最简单的Logical Plan单元的Logical Plan集合。
此外,所述查询语句的复杂源还包括:连接Join操作;所述Logical Plan集合还包括Join操作对应的Logical Plan单元。
经过步骤S301,Logical Plan被转换成简单的Logical Plan集合,Logical Plan集合只包含了table、aggregate、where、group、Join等最简单的Logical Plan单元。显然,通过Logical Plan单元与所述已注册物化视图进行匹配会提高匹配精度。
在步骤S302中,可以将Logical Plan集合中的所有Logical Plan单元与每个已注册物化视图进行匹配。若所述Logical Plan集合中的每个Logical Plan单元与至少一个已注册物化视图匹配成功,确定所述Logical Plan集合能匹配到已注册的物化视图。
在另一种示例中,为了提高匹配速度,可以为每个Logical Plan单元配置对应的已注册视图的匹配器,则可以将所述Logical Plan集合中的每个Logical Plan单元与对应的匹配器进行匹配;若所述Logical Plan集合中的每个Logical Plan单元与其对应的匹配器匹配成功,确定所述Logical Plan集合能匹配到已注册的物化视图。
S4、若所述Logical Plan能匹配到已注册的物化视图,改写所述Logical Plan;
其中,所述改写可以是对查询语句中的Logical Plan不做修改,并选择匹配到的已注册物化视图替代查询语句中的Logical Plan进行查询重写,完全对应用透明。举例来说,C是由A,B两张表经过一条SQL查询语句处理得到的,则C是A,B的物化视图。当接收到一条使用A Join B表的SQL查询语句时,系统会自动尝试能否改写成基于C表的查询。如果成功,因为避免了Join操作的发生,只是简单的基于C做了下过滤,但得到的结果和直接使用A,B表是一样的,显然,查询速度就有了很大的提高。
示例性的,若所述Logical Plan能匹配到已注册的物化视图,对匹配上的LogicalPlan进行改写,可以将匹配到已注册的物化视图完全等价,无缝替换掉SQL查询语句的Logical Plan。
在另一种示例中,为了方便改写,可以为每个Logical Plan单元配置对应的改写器,若所述Logical Plan能匹配到已注册的物化视图,调用Logical Plan单元对应的改写器改写其对应的Logical Plan单元。各个改写器生成一个改写完成后的Logical Plan,可以完全等价,无缝替换掉SQL查询语句的Logical Plan。
其中,Join操作对应的改写器通过物化视图替换Join操作。
基于本发明的Plan Rewrite模块,只要把表和物化视图的定义注册进来。给定一条SQL查询语句,就能返回一条改写后的完全等价的SQL查询语句,可以实现高效地预计算结果复用。
S5、根据改写后的Logical Plan进行查询。
改成完成后重新生成Logical Plan,即改写后的Logical Plan。以图2a为例,Optimizer模块基于规则的优化策略对语法树进行一次遍历。包括谓词下推、常量累加、列值剪裁等操作。将Logical Plan转换为Optimized Logical Plan。最后通过PhysicalPlanning模块生成Spark真正可以执行的Physical Plan。而在图2b中,在改写前已经分别对物化视图Logical Plan和SQL查询语句中的Logical Plan进行谓词下推、谓词合并等优化,可以直接通过Physical Planning模块生成Spark真正可以执行的Physical Plan。
至此,在所有的spark集群机器上,生成了可执行的Physical Plan,其可以是Java字节码,直接在每台机器上运行。
本发明实施例在spark中引入物化视图实现了数据预组织(partition,sort),数据预计算(过滤数据、反范式化,提前聚合)的功能。通过已注册的物化视图对查询语句中的Logical Plan进行匹配、改写,让数据适配计算,从而最大限度的提升数据查询效率。
下面以图3为例对本发明一种基于物化视图的Spark查询方法做具体说明。如图3所示,用户的SQL查询语句包含groupBy语句。其中,groupBy语句用于结合聚合函数,根据一个或多个列对结果集进行分组。Plan Rewrite模块由相同的语句和字段匹配物化视图Logical Plan集合,SQL查询语句匹配上物化视图后直接使用Plan Rewrite模块改写,使用mv_db.testmv.c替换查询里的c1。替换后SQL通过直接查询mv_db.testmv.c表中的数据,避免了groupBy的操作,大幅提升了计算效率。
图4是本发明一种基于物化视图的Spark查询装置的架构示意图,如图4所示,所述装置包括:
接收模块41,用于接收查询语句;
解析模块42,用于将所述查询语句解析为解析器引擎Catalyst中的逻辑计划Logical Plan;
匹配模块43,用于将所述Logical Plan与已注册的物化视图进行匹配;
改写模块44,用于若所述Logical Plan能匹配到已注册的物化视图,改写所述Logical Plan;
查询模块45,用于根据改写后的Logical Plan进行查询。
在一种示例中,所述匹配模块43包括:
第一解析模块,用于根据查询语句的复杂源将所述Logical Plan解析为只包含Logical Plan单元的Logical Plan集合;
子匹配模块,用于将所述Logical Plan集合与所述已注册物化视图进行匹配。
进一步的,所述查询语句的复杂源包括:子查询;所述第一解析模块包括:
提取模块,用于提取查询语句分中的子查询形成子查询树结构;
第一获取模块,用于根据所述子查询树结构获取该查询语句中的所有子查询;
第二获取模块,用于获取所有子查询对应的Logical Plan单元形成Logical Plan集合。
其中,所述第一获取模块包括:
判断模块,用于判断所述子查询树结构是否存在包含子查询的第一叶子节点;
子提取模块,用于若存在包含子查询的第一叶子节点,提取第一叶子节点的子查询形成新的子查询树结构;
循环模块,用于控制所述判断模块和所述子提取模块循环执行,直至最新的子查询树结构中所有叶子节点不包含子查询为止,将所述子查询树结构中的子查询作为该查询语句中的所有子查询。
优选的,所述查询语句的复杂源还包括:连接Join操作;所述Logical Plan集合还包括Join操作对应的Logical Plan单元。
示例性的,每个Logical Plan单元对应一个已注册视图的匹配器,所述子匹配模块包括:
第一匹配模块,用于将所述Logical Plan集合中的每个Logical Plan单元与对应的匹配器进行匹配;
确定模块,用于若所述Logical Plan集合中的每个Logical Plan单元与对应的匹配器匹配成功,确定所述Logical Plan集合能匹配到已注册的物化视图。
可选的,每个Logical Plan单元对应一个改写器,所述改写模块44通过每个改写器改写对应的Logical Plan单元;
其中,Join操作对应的改写器通过物化视图替换Join操作。
进一步的,所述物化视图由生成视图的结构化查询语言SQL和数据组成,所述装置还包括:
获取模块,用于获取生成视图的SQL,并将所述生成视图的SQL注册为物化视图,
存储模块,用于存储物化视图的数据;
更新模块,用于响应于更新指令,根据源数据更新已存储的物化视图数据。
本领域技术人员可以理解,上述装置实施例中的各模块可以按照描述分布于装置中,也可以进行相应变化,分布于不同于上述实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
下面描述本发明的电子设备实施例,该电子设备可以视为对于上述本发明的方法和装置实施例的实体形式的实施方式。对于本发明电子设备实施例中描述的细节,应视为对于上述方法或装置实施例的补充;对于在本发明电子设备实施例中未披露的细节,可以参照上述方法或装置实施例来实现。
图5是根据本发明的一种电子设备的示例性实施例的结构框图。图5显示的电子设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图5所示,该示例性实施例的电子设备500以通用数据处理设备的形式表现。电子设备500的组件可以包括但不限于:至少一个处理单元510、至少一个存储单元520、连接不同电子设备组件(包括存储单元520和处理单元510)的总线530、显示单元540等。
其中,所述存储单元520存储有计算机可读程序,其可以是源程序或都只读程序的代码。所述程序可以被处理单元510执行,使得所述处理单元510执行本发明各种实施方式的步骤。例如,所述处理单元510可以执行如图1所示的步骤。
所述存储单元520可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)5201和/或高速缓存存储单元5202,还可以进一步包括只读存储单元(ROM)5203。所述存储单元520还可以包括具有一组(至少一个)程序模块5205的程序/实用工具5204,这样的程序模块5205包括但不限于:操作电子设备、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线530可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备500也可以与一个或多个外部设备100(例如键盘、显示器、网络设备、蓝牙设备等)通信,使得用户能经由这些外部设备100与该电子设备500交互,和/或使得该电子设备500能与一个或多个其它数据处理设备(例如路由器、调制解调器等等)进行通信。这种通信可以通过输入/输出(I/O)接口550进行,还可以通过网络适配器560与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)进行。网络适配器560可以通过总线530与电子设备500的其它模块通信。应当明白,尽管图5中未示出,电子设备500中可使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID电子设备、磁带驱动器以及数据备份存储电子设备等。
图6是本发明的一个计算机可读介质实施例的示意图。如图6所示,所述计算机程序可以存储于一个或多个计算机可读介质上。计算机可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的电子设备、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。当所述计算机程序被一个或多个数据处理设备执行时,使得该计算机可读介质能够实现本发明的上述方法,即:接收查询语句;将所述查询语句解析为解析器引擎Catalyst中的逻辑计划Logical Plan;将所述Logical Plan与已注册的物化视图进行匹配;若所述Logical Plan能匹配到已注册的物化视图,改写所述Logical Plan;根据改写后的Logical Plan进行查询。
通过以上的实施方式的描述,本领域的技术人员易于理解,本发明描述的示例性实施例可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本发明实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个计算机可读的存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台数据处理设备(可以是个人计算机、服务器、或者网络设备等)执行根据本发明的上述方法。
所述计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行电子设备、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语音的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语音包括面向对象的程序设计语音—诸如Java、C++等,还包括常规的过程式程序设计语音—诸如“C”语音或类似的程序设计语音。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
综上所述,本发明可以执行计算机程序的方法、装置、电子设备或计算机可读介质来实现。可以在实践中使用微处理器或者数字信号处理器(DSP)等通用数据处理设备来实现本发明的一些或者全部功能。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,应理解的是,本发明不与任何特定计算机、虚拟装置或者电子设备固有相关,各种通用装置也可以实现本发明。以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (16)

1.一种基于物化视图的Spark查询方法,其特征在于,所述方法包括:
接收查询语句;
将所述查询语句解析为解析器引擎Catalyst中的逻辑计划Logical Plan;
将所述LogicalPlan与已注册的物化视图进行匹配;
若所述LogicalPlan能匹配到已注册的物化视图,改写所述Logical Plan;
根据改写后的LogicalPlan进行查询。
2.根据权利要求1所述的方法,其特征在于,所述将所述Logical Plan与已注册的物化视图进行匹配包括:
根据查询语句的复杂源将所述Logical Plan解析为只包含Logical Plan单元的LogicalPlan集合;
将所述LogicalPlan集合与所述已注册物化视图进行匹配。
3.根据权利要求2所述的方法,其特征在于,所述查询语句的复杂源包括:子查询;所述将所述LogicalPlan解析为只包含LogicalPlan单元的LogicalPlan集合包括:
提取查询语句分中的子查询形成子查询树结构;
根据所述子查询树结构获取该查询语句中的所有子查询;
获取所有子查询对应的LogicalPlan单元形成LogicalPlan集合;
所述根据所述子查询树结构获取该查询语句中的所有子查询包括:
S1、判断所述子查询树结构是否存在包含子查询的第一叶子节点;
S2、若存在包含子查询的第一叶子节点,提取第一叶子节点的子查询形成新的子查询树结构;
S3、重复步骤S1~S2,直至最新的子查询树结构中所有叶子节点不包含子查询为止,将所述子查询树结构中的子查询作为该查询语句中的所有子查询。
4.根据权利要求2所述的方法,其特征在于,所述查询语句的复杂源还包括:连接Join操作;所述LogicalPlan集合还包括Join操作对应的LogicalPlan单元。
5.根据权利要求2所述的方法,其特征在于,每个Logical Plan单元对应一个已注册视图的匹配器,所述将所述LogicalPlan集合与所述已注册物化视图进行匹配包括:
将所述Logical Plan集合中的每个Logical Plan单元与对应的匹配器进行匹配;
若所述Logical Plan集合中的每个Logical Plan单元与对应的匹配器匹配成功,确定所述LogicalPlan集合能匹配到已注册的物化视图。
6.根据权利要求5所述的方法,其特征在于,每个Logical Plan单元对应一个改写器,通过每个改写器改写对应的LogicalPlan单元;
其中,Join操作对应的改写器通过物化视图替换Join操作。
7.根据权利要求1所述的方法,其特征在于,所述物化视图由生成视图的结构化查询语言SQL和数据组成,所述方法还包括:
获取生成视图的SQL,并将所述生成视图的SQL注册为物化视图,
存储物化视图的数据;
响应于更新指令,根据源数据更新已存储的物化视图数据。
8.一种基于物化视图的Spark查询装置,其特征在于,所述装置包括:
接收模块,用于接收查询语句;
解析模块,用于将所述查询语句解析为解析器引擎Catalyst中的逻辑计划LogicalPlan;
匹配模块,用于将所述LogicalPlan与已注册的物化视图进行匹配;
改写模块,用于若所述LogicalPlan能匹配到已注册的物化视图,改写所述LogicalPlan;
查询模块,用于根据改写后的LogicalPlan进行查询。
9.根据权利要求8所述的装置,其特征在于,所述匹配模块包括:
第一解析模块,用于根据查询语句的复杂源将所述LogicalPlan解析为只包含LogicalPlan单元的LogicalPlan集合;
子匹配模块,用于将所述LogicalPlan集合与所述已注册物化视图进行匹配。
10.根据权利要求9所述的装置,其特征在于,所述查询语句的复杂源包括:子查询;所述第一解析模块包括:
提取模块,用于提取查询语句分中的子查询形成子查询树结构;
第一获取模块,用于根据所述子查询树结构获取该查询语句中的所有子查询;
第二获取模块,用于获取所有子查询对应的LogicalPlan单元形成LogicalPlan集合;
其中,所述第一获取模块包括:
判断模块,用于判断所述子查询树结构是否存在包含子查询的第一叶子节点;
子提取模块,用于若存在包含子查询的第一叶子节点,提取第一叶子节点的子查询形成新的子查询树结构;
循环模块,用于控制所述判断模块和所述子提取模块循环执行,直至最新的子查询树结构中所有叶子节点不包含子查询为止,将所述子查询树结构中的子查询作为该查询语句中的所有子查询。
11.根据权利要求9所述的装置,其特征在于,所述查询语句的复杂源还包括:连接Join操作;所述LogicalPlan集合还包括Join操作对应的LogicalPlan单元。
12.根据权利要求9所述的装置,其特征在于,每个Logical Plan单元对应一个已注册视图的匹配器,所述子匹配模块包括:
第一匹配模块,用于将所述LogicalPlan集合中的每个LogicalPlan单元与对应的匹配器进行匹配;
确定模块,用于若所述Logical Plan集合中的每个Logical Plan单元与对应的匹配器匹配成功,确定所述LogicalPlan集合能匹配到已注册的物化视图。
13.根据权利要求12所述的装置,其特征在于,每个LogicalPlan单元对应一个改写器,所述改写模块通过每个改写器改写对应的LogicalPlan单元;
其中,Join操作对应的改写器通过物化视图替换Join操作。
14.根据权利要求8所述的装置,其特征在于,所述物化视图由生成视图的结构化查询语言SQL和数据组成,所述装置还包括:
获取模块,用于获取生成视图的SQL,并将所述生成视图的SQL注册为物化视图,
存储模块,用于存储物化视图的数据;
更新模块,用于响应于更新指令,根据源数据更新已存储的物化视图数据。
15.一种电子设备,包括:
处理器;以及
存储计算机可执行指令的存储器,所述计算机可执行指令在被执行时使所述处理器执行根据权利要求1-7中任一项所述的方法。
16.一种计算机可读存储介质,其中,所述计算机可读存储介质存储一个或多个程序,当所述一个或多个程序被处理器执行时,实现权利要求1-7中任一项所述的方法。
CN202110470051.0A 2021-04-28 2021-04-28 一种基于物化视图的Spark查询方法、装置及电子设备 Pending CN113297212A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110470051.0A CN113297212A (zh) 2021-04-28 2021-04-28 一种基于物化视图的Spark查询方法、装置及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110470051.0A CN113297212A (zh) 2021-04-28 2021-04-28 一种基于物化视图的Spark查询方法、装置及电子设备

Publications (1)

Publication Number Publication Date
CN113297212A true CN113297212A (zh) 2021-08-24

Family

ID=77320442

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110470051.0A Pending CN113297212A (zh) 2021-04-28 2021-04-28 一种基于物化视图的Spark查询方法、装置及电子设备

Country Status (1)

Country Link
CN (1) CN113297212A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114547086A (zh) * 2022-04-22 2022-05-27 网易(杭州)网络有限公司 数据处理方法、装置、设备及计算机可读存储介质
CN114625757A (zh) * 2022-03-29 2022-06-14 医渡云(北京)技术有限公司 基于领域特定语言的任务执行方法及装置、介质、设备
CN115630117A (zh) * 2022-12-21 2023-01-20 网易(杭州)网络有限公司 数据分析方法、物化视图生成方法及相关设备
CN116701429A (zh) * 2023-05-19 2023-09-05 杭州云之重器科技有限公司 一种基于批量历史任务模糊化的公共查询方法

Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6496819B1 (en) * 1998-12-28 2002-12-17 Oracle Corporation Rewriting a query in terms of a summary based on functional dependencies and join backs, and based on join derivability
CN103425672A (zh) * 2012-05-17 2013-12-04 阿里巴巴集团控股有限公司 一种数据库索引的建立方法及装置
CN105677752A (zh) * 2015-12-30 2016-06-15 深圳先进技术研究院 一种流式计算和批处理计算相结合处理系统及方法
US20160335318A1 (en) * 2015-05-11 2016-11-17 AtScale, Inc. Dynamic aggregate generation and updating for high performance querying of large datasets
WO2017088683A1 (zh) * 2015-11-24 2017-06-01 阿里巴巴集团控股有限公司 一种数据脱敏的方法及系统
US20170371926A1 (en) * 2016-06-24 2017-12-28 Dremio Corporation Self-service data platform
US20190034482A1 (en) * 2017-07-28 2019-01-31 Risk Management Solutions, Inc. Metadata-based general request translator for distributed computer systems
CN110059103A (zh) * 2019-04-28 2019-07-26 南京大学 一种跨平台统一的大数据sql查询方法
CN110633333A (zh) * 2019-09-25 2019-12-31 京东数字科技控股有限公司 数据血缘关系的处理方法及系统、计算设备和介质
CN110781212A (zh) * 2019-09-20 2020-02-11 成都四方伟业软件股份有限公司 一种sql高效计算和访问的方法、组件及系统
CN110909014A (zh) * 2018-09-14 2020-03-24 阿里巴巴集团控股有限公司 优化建议生成及数据库查询方法、装置、设备及存储介质
US20200151170A1 (en) * 2018-11-14 2020-05-14 Baidu Online Network Technology (Beijing) Co., Ltd. Spark query method and system supporting trusted computing
US20200341978A1 (en) * 2019-04-23 2020-10-29 Thoughtspot, Inc. Query Generation Based On A Logical Data Model With One-to-One Joins
US20210019318A1 (en) * 2018-09-21 2021-01-21 Ting Yu Leung Materialized views for database query optimization

Patent Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6496819B1 (en) * 1998-12-28 2002-12-17 Oracle Corporation Rewriting a query in terms of a summary based on functional dependencies and join backs, and based on join derivability
CN103425672A (zh) * 2012-05-17 2013-12-04 阿里巴巴集团控股有限公司 一种数据库索引的建立方法及装置
US20160335318A1 (en) * 2015-05-11 2016-11-17 AtScale, Inc. Dynamic aggregate generation and updating for high performance querying of large datasets
WO2017088683A1 (zh) * 2015-11-24 2017-06-01 阿里巴巴集团控股有限公司 一种数据脱敏的方法及系统
CN105677752A (zh) * 2015-12-30 2016-06-15 深圳先进技术研究院 一种流式计算和批处理计算相结合处理系统及方法
US20170371926A1 (en) * 2016-06-24 2017-12-28 Dremio Corporation Self-service data platform
US20190034482A1 (en) * 2017-07-28 2019-01-31 Risk Management Solutions, Inc. Metadata-based general request translator for distributed computer systems
CN110909014A (zh) * 2018-09-14 2020-03-24 阿里巴巴集团控股有限公司 优化建议生成及数据库查询方法、装置、设备及存储介质
US20210019318A1 (en) * 2018-09-21 2021-01-21 Ting Yu Leung Materialized views for database query optimization
US20200151170A1 (en) * 2018-11-14 2020-05-14 Baidu Online Network Technology (Beijing) Co., Ltd. Spark query method and system supporting trusted computing
US20200341978A1 (en) * 2019-04-23 2020-10-29 Thoughtspot, Inc. Query Generation Based On A Logical Data Model With One-to-One Joins
CN110059103A (zh) * 2019-04-28 2019-07-26 南京大学 一种跨平台统一的大数据sql查询方法
CN110781212A (zh) * 2019-09-20 2020-02-11 成都四方伟业软件股份有限公司 一种sql高效计算和访问的方法、组件及系统
CN110633333A (zh) * 2019-09-25 2019-12-31 京东数字科技控股有限公司 数据血缘关系的处理方法及系统、计算设备和介质

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114625757A (zh) * 2022-03-29 2022-06-14 医渡云(北京)技术有限公司 基于领域特定语言的任务执行方法及装置、介质、设备
CN114547086A (zh) * 2022-04-22 2022-05-27 网易(杭州)网络有限公司 数据处理方法、装置、设备及计算机可读存储介质
CN115630117A (zh) * 2022-12-21 2023-01-20 网易(杭州)网络有限公司 数据分析方法、物化视图生成方法及相关设备
CN116701429A (zh) * 2023-05-19 2023-09-05 杭州云之重器科技有限公司 一种基于批量历史任务模糊化的公共查询方法
CN116701429B (zh) * 2023-05-19 2023-12-29 杭州云之重器科技有限公司 一种基于批量历史任务模糊化的公共查询方法

Similar Documents

Publication Publication Date Title
CN111061757B (zh) 数据库的语言转换方法、装置、电子设备及存储介质
CN113297212A (zh) 一种基于物化视图的Spark查询方法、装置及电子设备
US9305057B2 (en) Extensible indexing framework using data cartridges
US20170083573A1 (en) Multi-query optimization
Neumann et al. Compiling Database Queries into Machine Code.
JPH04291458A (ja) 関係型照会を使用して非関係型データファイルにアクセスする方法及び装置
US11176133B2 (en) Filter evaluation for table fragments
KR20070120492A (ko) 데이터베이스 질의를 용이하게 하는 시스템 및데이터베이스 질의를 단순화하는 방법
JP5113157B2 (ja) データの記憶及び検索を行うためのシステム及び方法
CN112162983A (zh) 数据库索引建议处理方法、装置、介质和电子设备
CN117093599A (zh) 面向异构数据源的统一sql查询方法
JP2012113706A (ja) データベース・クエリ最適化のためのコンピュータで実装される方法、コンピュータ・プログラム、およびデータ処理システム
Petersohn et al. Flexible rule-based decomposition and metadata independence in modin: a parallel dataframe system
Castillo et al. RDFMatView: Idexing RDF Data for SPARQL Queries
Marroquín et al. Pay one, get hundreds for free: Reducing cloud costs through shared query execution
Douglas et al. LittleD: a SQL database for sensor nodes and embedded applications
Krause et al. graphannis: A fast query engine for deeply annotated linguistic corpora
Yan et al. Generating application-specific data layouts for in-memory databases
Damasio et al. Guided automated learning for query workload re-optimization
EP3816814A1 (en) Crux detection in search definitions
CN113032366A (zh) 基于Flex和Bison的SQL语法树解析方法
CN110008448B (zh) 将SQL代码自动转换为Java代码的方法和装置
Li et al. LotusSQL: SQL engine for high-performance big data systems
KR20200059502A (ko) 분산형 데이터베이스상의 인덱스 병합을 활용한 질의 최적화 방법
JP2000181697A (ja) メインフレームcobol資産のオープン系システムへのコンバージョン方法及び装置並びに記録媒体

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
CB02 Change of applicant information

Country or region after: Zhong Guo

Address after: Room 1109, No. 4, Lane 800, Tongpu Road, Putuo District, Shanghai, 200062

Applicant after: Shanghai Qiyue Information Technology Co.,Ltd.

Address before: Room a2-8914, 58 Fumin Branch Road, Hengsha Township, Chongming District, Shanghai, 201500

Applicant before: Shanghai Qiyue Information Technology Co.,Ltd.

Country or region before: Zhong Guo

CB02 Change of applicant information