基于Spark的跨数据源操作方法、设备及存储介质技术

技术编号:39184384 阅读:13 留言:0更新日期:2023-10-27 08:31
本发明专利技术涉及数据库操作技术领域,公开了一种基于Spark的跨数据源操作方法、设备及存储介质。该方法包括:创建Spark会话,获取编写的若干SQL脚本并进行预解析;若SQL脚本中待执行的数据表为映射库表,则将待执行的映射库表注册为Spark会话的临时视图;将SQL脚本中待执行的映射库表替换为临时视图,得到新SQL脚本,并将新SQL脚本提交SparkSQL引擎执行;获取SparkSQL引擎输出的第一结果集;根据跨数据源操作类型,调用外部数据源的对应操作接口对第一结果集进行处理。本发明专利技术降低了基于Spark跨数据源操作的代码开发量与开发复杂程度,提升了跨数据源操作的性能。了跨数据源操作的性能。了跨数据源操作的性能。

【技术实现步骤摘要】
基于Spark的跨数据源操作方法、设备及存储介质


[0001]本专利技术涉及数据库操作
,尤其涉及一种基于Spark的跨数据源操作方法、设备及存储介质。

技术介绍

[0002]Spark是Apache开源社区顶级项目,是采用分布式模型处理海量数据的统一分析引擎。SparkSQL引擎是Spark的一个重要模块,将标准SQL分解为Spark高级接口DataFrame 进行格式和接口统一的分布式计算,其打通了各种编程语言和常用算法库。SparkSQL有自己的数据仓库,但是也可以使用一行简单的配置接入Hive数仓,可以方便用户进行Hive 数仓模型上的引擎升级进而带来更高的性能以及灵活的计算接口,这也是现在最常见的一种数仓搭建方案,即采用 Hive管理数仓元数据,而将Spark 作为统一分析引擎。
[0003]在实际使用Spark做数据处理的场景中,会涉及到很多跨数据源的操作,比如列存数据库HBase、K

V数据库Redis、消息中间件Kafka,以及一些提供了标准JDBC接口的关系型数据库,比如Mysql、SqlServer、Oracle等。有时需要将海量用户的数据放入HBase、Oracle提供给客户进行高并发的查询(比如用户每一天的股票盈亏),有时需要从Oracle、Mysql读取维表数据和 Hive数仓中的表进行关联查询等。具体涉及对不同外部数据源进行查询、插入和删除三种操作,但这三种操作过程都需要用户通过编写大量复杂的代码实现,这不仅操作效率低,而且实现的性能也不高。
专利
技术实现思路

[0004]本专利技术的主要目的在于提供一种基于Spark的跨数据源操作方法、设备及存储介质,旨在解决现有基于Spark的跨数据源操作存在需要编写大量复杂代码而导致操作效率低且实现性能不高的技术问题。
[0005]本专利技术第一方面提供了一种基于Spark的跨数据源操作方法,所述基于Spark的跨数据源操作方法包括:创建Spark会话,获取编写的若干SQL脚本并分别进行预解析;判断预解析后的所述SQL脚本中待执行的数据表是否为外部数据源的映射库表;若所述SQL脚本中待执行的数据表为映射库表,则将待执行的映射库表注册为所述Spark会话的临时视图;将所述SQL脚本中待执行的映射库表替换为所述临时视图,得到新SQL脚本,并将所述新SQL脚本提交SparkSQL引擎执行;获取所述SparkSQL引擎输出的第一结果集;根据跨数据源操作类型,调用所述外部数据源的对应操作接口对所述第一结果集进行处理,直至各所述SQL脚本执行完成后关闭所述Spark会话。
[0006]可选的,在本专利技术第一方面的第一种实现方式中,在所述判断预解析后的所述SQL脚本中待执行的数据表是否为外部数据源的映射库表之后,还包括:
若所述SQL脚本中待执行的数据表为非映射库表,则确定所述SQL脚本中SQL语句的语法类型;若所述SQL语句为删除操作且采用预置SQL方言,则将所述SQL方言中的SELECT子句提交所述SparkSQL引擎执行并获取返回的第二结果集;依次判断所述第二结果集中字段与所述外部数据源的主键的匹配程度;根据所述第二结果集中字段与所述外部数据源的主键的匹配程度,确定所述外部数据源中待删除的主键并进行删除处理。
[0007]可选的,在本专利技术第一方面的第二种实现方式中,所述根据所述第二结果集中字段与所述外部数据源的主键的匹配程度,确定所述外部数据源中待删除的主键并进行删除处理包括:若所述第二结果集中字段与所述外部数据源的主键完全匹配,则将所述第二结果集中与所述外部数据源的主键完全匹配的各字段拼接为一个拼接主键,并调用所述外部数据源的删除接口对所述拼接主键进行删除处理;若所述第二结果集中字段与所述外部数据源的主键前缀匹配,则通过迭代所述第二结果集中字段,将所述第二结果集中与所述外部数据源的主键前缀匹配的各字段拼接为一个拼接主键前缀;根据所述拼接主键前缀扫描所述外部数据源,获得所述外部数据源中的主键集合,并调用所述外部数据源的删除接口对所述主键集合进行删除处理。
[0008]可选的,在本专利技术第一方面的第三种实现方式中,在所述获取编写的若干SQL脚本之前,还包括:创建所述外部数据源的映射库表,其中,所述映射库表用于将所述外部数据源中的数据结构映射到自定义表结构中并保存所述外部数据源的相关服务配置。
[0009]可选的,在本专利技术第一方面的第四种实现方式中,所述相关服务配置包括:IP端口、字段映射和条件过滤中的一种或多种。
[0010]可选的,在本专利技术第一方面的第五种实现方式中,所述SQL脚本根据所述外部数据源的映射库表和所述SparkSQL内部数据源的数据表共同开发。
[0011]可选的,在本专利技术第一方面的第六种实现方式中,所述根据跨数据源操作类型,调用所述外部数据源的对应操作接口对所述第一结果集进行处理包括:若跨数据源操作类型为插入操作,则调用所述外部数据源的插入接口将所述第一结果集保存到所述外部数据源中;若跨数据源操作类型为查询操作,则调用所述外部数据源的查询接口返回所述第一结果集;若跨数据源操作类型为删除操作,则调用所述外部数据源的删除接口删除所述外部数据源中符合所述第一结果集的数据。
[0012]可选的,在本专利技术第一方面的第七种实现方式中,所述SQL方言使用的句式为:DELETE FROM T0 [SELECT子句],其中,T0为外部数据源中的数据表。
[0013]本专利技术第二方面提供了一种计算机设备,包括:存储器和至少一个处理器,所述存储器中存储有指令;所述至少一个处理器调用所述存储器中的所述指令,以使得所述计算机设备执行上述的基于Spark的跨数据源操作方法的各个步骤。
[0014]本专利技术的第三方面提供了一种计算机可读存储介质,所述计算机可读存储介质中
存储有指令,当其在计算机上运行时,使得计算机执行上述的基于Spark的跨数据源操作方法的各个步骤。
[0015]相比现有技术,本专利技术的有益效果在于:本专利技术通过SQL的方式自动将外部数据源中的数据结构通过一定的映射规则转换成映射库表,并将映射库表注册为SparkSQL中的临时视图,同时将SQL脚本中待执行的映射库表替换为临时视图,并提交SparkSQL引擎执行,通过SQL语法即可对其进行查询、插入和删除操作,不需要编写复杂的代码,降低了基于Spark跨数据源操作的代码开发量与开发复杂程度,提升了跨数据源操作的性能。
附图说明
[0016]图1为本专利技术实施例基于Spark的跨数据源操作方法的一实施例流程示意图;图2为本专利技术实施例基于Spark的跨数据源操作方法的另一实施例流程示意图;图3为本专利技术计算机设备一个实施例的结构示意图。
具体实施方式
[0017]为使本专利技术实施例的目的、技术方案和优点更加清楚,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地说明,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于Spark的跨数据源操作方法,其特征在于,所述基于Spark的跨数据源操作方法包括:创建Spark会话,获取编写的若干SQL脚本并分别进行预解析;判断预解析后的所述SQL脚本中待执行的数据表是否为外部数据源的映射库表;若所述SQL脚本中待执行的数据表为映射库表,则将待执行的映射库表注册为所述Spark会话的临时视图;将所述SQL脚本中待执行的映射库表替换为所述临时视图,得到新SQL脚本,并将所述新SQL脚本提交SparkSQL引擎执行;获取所述SparkSQL引擎输出的第一结果集;根据跨数据源操作类型,调用所述外部数据源的对应操作接口对所述第一结果集进行处理,直至各所述SQL脚本执行完成后关闭所述Spark会话。2.根据权利要求1所述的基于Spark的跨数据源操作方法,其特征在于,在所述判断预解析后的所述SQL脚本中待执行的数据表是否为外部数据源的映射库表之后,还包括:若所述SQL脚本中待执行的数据表为非映射库表,则确定所述SQL脚本中SQL语句的语法类型;若所述SQL语句为删除操作且采用预置SQL方言,则将所述SQL方言中的SELECT子句提交所述SparkSQL引擎执行并获取返回的第二结果集;依次判断所述第二结果集中字段与所述外部数据源的主键的匹配程度;根据所述第二结果集中字段与所述外部数据源的主键的匹配程度,确定所述外部数据源中待删除的主键并进行删除处理。3.根据权利要求2所述的基于Spark的跨数据源操作方法,其特征在于,所述根据所述第二结果集中字段与所述外部数据源的主键的匹配程度,确定所述外部数据源中待删除的主键并进行删除处理包括:若所述第二结果集中字段与所述外部数据源的主键完全匹配,则将所述第二结果集中与所述外部数据源的主键完全匹配的各字段拼接为一个拼接主键,并调用所述外部数据源的删除接口对所述拼接主键进行删除处理;若所述第二结果集中字段与所述外部数据源的主键前缀匹配,则通过迭代所述第二结果集中字段,将所述第二结果集中与所述外部数据源的主键前缀匹配的各字段拼接为一个拼接主键前缀;根据所述拼接主键前缀扫描所述外...

【专利技术属性】
技术研发人员:古乐乐徐楠
申请(专利权)人:长城证券股份有限公司
类型:发明
国别省市:

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

1