CN110851513B - 基于Spark计算引擎的多源异构数据读取方法及装置 - Google Patents
基于Spark计算引擎的多源异构数据读取方法及装置 Download PDFInfo
- Publication number
- CN110851513B CN110851513B CN201910981513.8A CN201910981513A CN110851513B CN 110851513 B CN110851513 B CN 110851513B CN 201910981513 A CN201910981513 A CN 201910981513A CN 110851513 B CN110851513 B CN 110851513B
- Authority
- CN
- China
- Prior art keywords
- plug
- data
- source
- calculation engine
- data sources
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/252—Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明公开了一种基于Spark计算引擎的多源异构数据读取方法及装置,该方法包括:获取Spark计算引擎读取一种或多种数据源的配置文件,其中,配置文件中包含多个插件,每个插件对应一种数据源的配置项;根据配置文件,返回一个插件对象列表,其中,插件对象列表中每个插件对象对应一种数据源的插件;基于插件对象列表,根据Spark计算引擎读取一种或多种数据源的源数据,返回Spark计算引擎读取的一种或多种数据源的DataFrame数据。本发明基于配置和插件的方式,实现Spark计算引擎对多源异构数据的读取,管理方便,扩展性强。
Description
技术领域
本发明涉及大数据领域,尤其涉及一种基于Spark计算引擎的多源异构数据读取方法及装置。
背景技术
本部分旨在为权利要求书中陈述的本发明实施例提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
Spark是基于内存计算的大数据并行计算框架,能够大大提高大数据环境下数据处理的实时性。Spark SQL是Spark中的一个模块,主要用于结构化数据的处理,其核心抽象是DataFrame。Spark SQL中的DataFrame类似于一张关系型数据表,在关系型数据库中对单表或进行的查询操作,而在DataFrame中都可以通过调用其API接口来实现。DataFrame是Spark提供的统一结构化数据接口,基于DataFrame能够实现结构化数据的快速分析,让Spark具备了处理大规模结构化数据处理的能力,不仅简单易用,而且获得了更高的计算性能。
Spark SQL的DataFrame接口支持多种数据源的操作,其默认数据源为Parquet格式。当数据源为Parquet文件时,Spark SQL可以方便地执行所有的操作;当数据源格式不是parquet格式文件时,需要手动指定数据源的格式,且数据源格式需要指定全名(例如:org.apache.spark.sql.parquet),若数据源格式为内置格式,则只需要指定简称(例如,json、parquet、jdbc、orc、libsvm、csv、text等)来指定数据格式。
目前,基于Spark框架读取多源数据的时候,由于对每种数据源的数据格式转换进行代码配置,导致配置工作难度大、效率低。
针对上述问题,尚未提出有效的解决方案。
发明内容
本发明实施例提供一种基于Spark计算引擎的多源异构数据读取方法,用以解决现有Spark计算引擎在读取多源异构数据的时候,由于对每种数据源的数据格式转换进行代码配置,导致配置工作难度大、效率低的技术问题,该方法包括:接收用户定义的一种或多种数据源的插件,其中,不同数据源的插件具有不同的配置项,不同数据源的插件对应不同的插件实现类,插件实现类用于通过读取不同数据源的配置项,将每个插件对应数据源的源数据,转换为Spark计算引擎的DataFrame数据;接收用户为每种数据源的插件定义的一个或多个配置项;根据用户定义的一种或多种数据源的插件,以及每种数据源的插件对应的一个或多个配置项,生成Spark计算引擎读取一种或多种数据源的配置文件;获取Spark计算引擎读取一种或多种数据源的配置文件,其中,配置文件中包含多个插件,每个插件对应一种数据源的配置项;根据配置文件,返回一个插件对象列表,其中,插件对象列表中每个插件对象对应一种数据源的插件;基于插件对象列表,根据Spark计算引擎读取一种或多种数据源的源数据,返回Spark计算引擎读取的一种或多种数据源的DataFrame数据。
本发明实施例还提供一种基于Spark计算引擎的多源异构数据读取装置,用以解决现有Spark计算引擎在读取多源异构数据的时候,由于对每种数据源的数据格式转换进行代码配置,导致配置工作难度大、效率低的技术问题,该装置包括:配置模块,用于接收用户定义的一种或多种数据源的插件;接收用户为每种数据源的插件定义的一个或多个配置项;根据用户定义的一种或多种数据源的插件,以及每种数据源的插件对应的一个或多个配置项,生成Spark计算引擎读取一种或多种数据源的配置文件,其中,不同数据源的插件具有不同的配置项,不同数据源的插件对应不同的插件实现类,插件实现类用于通过读取不同数据源的配置项,将每个插件对应数据源的源数据,转换为Spark计算引擎的DataFrame数据;配置文件获取模块,用于获取Spark计算引擎读取一种或多种数据源的配置文件,其中,配置文件中包含多个插件,每个插件对应一种数据源的配置项;数据处理模块,用于根据配置文件,返回一个插件对象列表,其中,插件对象列表中每个插件对象对应一种数据源的插件;多源异构数据读取模块,用于基于插件对象列表,根据Spark计算引擎读取一种或多种数据源的源数据,返回Spark计算引擎读取的一种或多种数据源的DataFrame数据。
本发明实施例还提供一种计算机设备,用以解决现有Spark计算引擎在读取多源异构数据的时候,由于对每种数据源的数据格式转换进行代码配置,导致配置工作难度大、效率低的技术问题,该计算机设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述基于Spark计算引擎的多源异构数据读取方法。
本发明实施例还提供一种计算机可读存储介质,用以解决现有Spark计算引擎在读取多源异构数据的时候,由于对每种数据源的数据格式转换进行代码配置,导致配置工作难度大、效率低的技术问题,该计算机可读存储介质存储有执行上述基于Spark计算引擎的多源异构数据读取方法的计算机程序。
本发明实施例中,基于配置和插件的方式,统一Spark计算引擎读取异构数据源的接口,使得每种数据源对应一个插件,每个插件具有不同的配置项,在使用Spark计算引擎读取多种数据源的时候,根据Spark计算引擎读取数据源的配置文件,返回一个插件对象列表,由于该插件对象列表中每个插件对象对应一种数据源的插件,因而,可以基于该插件对象列表,根据Spark计算引擎读取一种或多种数据源的源数据,返回Spark计算引擎读取的一种或多种数据源的DataFrame数据。
通过本发明实施例,基于配置和插件的方式,实现Spark计算引擎对多源异构数据的读取,管理方便,扩展性强。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1为本发明实施例中提供的一种基于Spark计算引擎的多源异构数据读取方法流程图;
图2为本发明实施例中提供的一种基于Spark计算引擎的多源异构数据读取装置示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。
在本说明书的描述中,所使用的“包含”、“包括”、“具有”、“含有”等,均为开放性的用语,即意指包含但不限于。参考术语“一个实施例”、“一个具体实施例”、“一些实施例”、“例如”等的描述意指结合该实施例或示例描述的具体特征、结构或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。各实施例中涉及的步骤顺序用于示意性说明本申请的实施,其中的步骤顺序不作限定,可根据需要作适当调整。
本发明实施例中提供了一种基于Spark计算引擎的多源异构数据读取方法,图1为本发明实施例中提供的一种基于Spark计算引擎的多源异构数据读取方法流程图,如图1所示,该方法可以包括如下步骤:
S101,获取Spark计算引擎读取一种或多种数据源的配置文件,其中,配置文件中包含多个插件,每个插件对应一种数据源的配置项。
需要说明的是,本发明实施例中Spark计算引擎读取的数据源Spark计算引擎内置的数据源(例如,Spark计算引擎能够通过jdbc读取Mysql数据库、Oracle数据库、PostgreSQL数据库中的数据)、第三方平台提供的数据源(例如,Elasticsearch官方平台提供的数据库、Mongodb官方平台提供的数据源等)或用户自定义的数据源(例如,Hbase数据库、Redis数据库等)。
可选地,在上述S101之前,本发明实施例提供的基于Spark计算引擎的多源异构数据读取方法还可以包括如下步骤:接收用户定义的一种或多种数据源的插件;接收用户为每种数据源的插件定义的一个或多个配置项;根据用户定义的一种或多种数据源的插件,以及每种数据源的插件对应的一个或多个配置项,生成Spark计算引擎读取一种或多种数据源的配置文件。
本发明实施例基于基于配置和插件的方式,统一Spark计算引擎读取数据源的接口,将Spark计算引擎读取的所有数据源通过配置文件实现,使得每种数据源对应配置文件中的一个插件,每个插件具有不同的配置项,由于不同数据格式的数据源,具有自己独有的配置信息,因而,在配置Spark计算引擎读取的多种数据源的时候,每种数据源对应插件的配置项是具有差异的。
一种可选的实施例中,配置文件的格式可以表示如下:
本发明实施例中,为Spark计算引擎读取的每种数据源定义一个插件名,表1示出了不同数据源对应的插件名。
表1不同数据源对应的插件名
需要注意的是,配置文件中不同数据源对应插件的配置项包括必选配置项和可选配置项,其中,必选配置项是必须选择的配置项(例如,数据源的路径信息);可选配置项是可以选择是否配置的配置项。
例如,Spark计算引擎读取HDFS文件上csv格式文件为例,指定表头,其中,path为必选配置项,其他配置项为可选配置项。配置文件可以表示如下:
S102,根据配置文件,返回一个插件对象列表,其中,插件对象列表中每个插件对象对应一种数据源的插件。
作为一种可选的实施方式,本发明实施例提供的方法可以基于Scala语言来实现,使用统一的方法buildSourcePlugins(configfile:String),将配置文件的插件转换为插件对象列表,该方法的参数为配置文件的路径信息。由于Scala语言和Java语言都是基于JVM的语言,因此Scala语言和Java语言实现的方法是可以相互调用。
S103,基于插件对象列表,根据Spark计算引擎读取一种或多种数据源的源数据,返回Spark计算引擎读取的一种或多种数据源的DataFrame数据。
具体地,在根据Spark计算引擎读取一种或多种数据源的配置文件,返回一个插件对象列表,可以基于该插件对象列表,将每种数据源的源数据转换为相应的DataFrame数据。
作为一种可选的实施方式,上述S103可以具体通过如下步骤来实现:遍历插件对象列表中的每个插件,查找每个插件对应的插件实现类;基于查找到的每个插件对应的插件实现类,将每个插件对应数据源的源数据转换Spark计算引擎能够操作的DataFrame数据。
进一步地,在遍历插件对象列表中的每个插件,查找每个插件对应的插件实现类之前,本发明实施例提供的基于Spark计算引擎的多源异构数据读取方法还可以包括如下步骤:获取预先定义的数据源父类,其中,数据源父类用于实现Spark计算引擎读取各种数据源均需执行的操作功能;获取预先定义的各种数据源对应的插件实现类,其中,每种数据源对应的插件实现类均继承数据源父类所有的操作功能;将配置文件中各种数据源对应的插件,映射至相应的插件实现类。
需要说明的是,本发明实施例中,数据源父类用于实现Spark计算引擎读取各种数据源均需执行的操作功能,例如,初始化配置功能、检查配置功能、执行准备功能、执行配置功能。
可以看出,本发明实施例提供的基于Spark计算引擎的多源异构数据读取方法,用户只需要关注Spark计算引擎的配置文件,在根据配置文件返回的插件对象列表后,遍历该插件对象列表,以通过每种数据源对应插件对象的插件,返回相应数据源的DataFrame数据。在获取到各种数据源的DataFrame数据后,可对各种数据源的DataFrame数据执行任何操作,例如,可根据实际业务需要实现但不限于如下操作:将各种数据源的DataFrame注册为临时表、对各种数据源执行数据转换处理、执行各种数据源之间的关联操作、将各种数据源的DataFrame数据存储到于但不下于分布式文件系统HDFS、HBase数据库或Oracle数据库等。
由此,第一种可选的实施方式中,上述S103之后,本发明实施例提供的基于Spark计算引擎的多源异构数据读取方法还可以包括如下步骤:根据插件对象列表,将各种数据源的DataFrame数据,注册为Spark临时表。
第二种可选的实施方式中,上述S103之后,本发明实施例提供的基于Spark计算引擎的多源异构数据读取方法还可以包括如下步骤:根据插件对象列表,对各种数据源执行关联操作或数据转换处理。
第三种可选的实施方式中,上述S103之后,本发明实施例提供的基于Spark计算引擎的多源异构数据读取方法还可以包括如下步骤:根据插件对象列表,将各种数据源的DataFrame数据,存储到分布式文件系统HDFS、HBase数据库或Oracle数据库中。
由上可知,本发明实施例提供的基于Spark计算引擎的多源异构数据读取方法,基于配置和插件的方式,统一Spark计算引擎读取异构数据源的接口,使得每种数据源对应一个插件,每个插件具有不同的配置项,在使用Spark计算引擎读取多种数据源的时候,根据Spark计算引擎读取数据源的配置文件,返回一个插件对象列表,由于该插件对象列表中每个插件对象对应一种数据源的插件,因而,可以基于该插件对象列表,根据Spark计算引擎读取一种或多种数据源的源数据,返回Spark计算引擎读取的一种或多种数据源的DataFrame数据。
通过本发明实施例提供的基于Spark计算引擎的多源异构数据读取方法,基于配置和插件的方式,实现Spark计算引擎对多源异构数据的读取,管理方便,扩展性强。
作为一种优选的实施方式,下面以Scala语言为例来说明实现本发明实施例提供的基于Spark计算引擎的多源异构数据读取的实现方法。本发明实施例中,基于配置和插件的方式来实现多源异构数据的读取,每种数据源对应的插件只需要实现一次,后续数据读取如果需要使用该插件,只需要在配置文件配置即可实现复用,具体包括如下几部分:
(一)父类的定义与实现:
定义一个父类SourcePlugin,该类为抽象类,定义的方法如下:
initConfig:用于初始化配置,根据配置文件的参数定义配置;
checkConfig:用于检查配置,检查配置参数的合法性;
preprocess:准备工作,例如,生成默认的配置、添加广播变量、累加器等优化工作;
perform:执行,即基于配置,生成DataFrame数据,可供后续数据处理直接使用。
(二)插件实现类的定义与实现:
各个插件对应的插件实现类继承自父类SourcePlugin,能够实现父类所有的功能,插件的实现流程如下:
(1)定义各种数据源对应插件的配置项:每种数据源对应插件的配置项分为必选配置项和可选配置项,每种数据源对应插件的实现方式不同,其配置项也不同。在配置每种数据源对应插件的配置项后,各个插件对应的插件实现类能够读取配置项并进行处理。
(2)配置父类和子类的对应关系:基于Java ServiceLoader技术,在resources目录下,新建目录META-INF/services,并在services目录下新建一个文件,文件名为父类的全限定名(包含包名),文件的内容为所有基于该父类实现的子类全限定名。
此配置用于将配置文件中包含的各个插件映射为相应的插件实现类。
(3)实现各个插件实现类:每个插件对应一个插件实现类,集成DataFrame,实现父类initConfig、checkConfig、preprocess、getDataFrame的四个功能。通过getDataFrame,将每个插件定义的数据源转换为Spark计算引擎的DataFrame数据,用于后续的数据处理。
A.定义全局的配置对象config;
B.实现initConfig方法:读取配置文件,将配置属性添加到配置对象config中。
C.实现checkConfig方法:检查配置文件的配置是否合法,针对所有异常的配置,将错误信息集中返回。
合法性检查包括三方面:
第一,必选配置项的检查:需要检查必选的配置项是否均配置,例如,文件数据源的path配置项;
第二,可选配置项的检查:如果配置了可选配置项,则配置项的内容不能为空。
第三,配置项内容的合法性校验:所有配置项(包括必选配置项、可选配置项)的内容是否正确,例如,文件数据源的格式format配置项,文件格式format配置项只能设置为csv、orc、json、text、xml、orc、parquet,其他格式则抛出异常;服务器主机的端口必须是数字等。
D.实现preprocess方法:
a)生成默认的配置属性添加到config对象:
对于可选配置项,如果配置文件里没有配置,则在这里面设置默认的配置项;例如,如文件数据源的格式配置项(format),如果配置文件没有配置format,则使用默认的json格式。如elasticsearch主机的端口,如果没有配置,则使用默认的9200端口。
b)初始化累加器:
在Spark计算引擎中,如果想在计算的时候统计某些事件的数量,可以使用累加器,累加器顾名思义该变量只能增加。因此在数据读取之前,初始化累加器。
示例:val accum=sc.accumulator(0,"Example Accumulator"),后续就可以使用类似的语句实现累加:accum+=1。
E.实现getDataFrame方法:
根据配置文件的配置属性,将数据源转换为DataFrame数据类型。DataFrame是Spark统一的分布式数据集合,包含Schema信息,可将数据源注册为Spark SQL的表。
基于本发明实施例提供的基于Spark计算引擎的多源异构数据读取方法,整体实现流程如下:
(一)读取配置:将配置文件读取到config变量中。
val config=ConfigFactory.parseFile(new File(configfile))
(二)通过buildSourcePlugins方法,返回配置插件的插件对象列表,List[SourcePlugin]。
其中,buildSourcePlugins方法实现的逻辑如下:
(1)通过config遍历,依次遍历配置文件中的各个插件配置。
(2)取出第一个插件配置,通过server loader查找该插件的实现类,通过Java的反射机制实例化该类。ServiceLoader一个简单的服务提供者加载设施,简单理解其功能就是,根据给定的接口,找到当前接口所有实现的类,此处能够实现根据所有插件的父类,查找所有数据源的插件实现类。
(3)依次调用initConfig、checkConfig、preprocess、getDataFrame四个方法。
(4)将getDataFrame返回的DataFrame对象添加到列表List[SourcePlugin]中。
(5)取出第二个插件配置,重复上面第(2)~(4)步,直到遍历完配置文件中所有的插件。
需要注意的是,buildSourcePlugins方法的具体实现,无需用户了解。
buildSourcePlugins这个方法是暴露给用户使用的,方法的参数为配置文件的路径,即buildSourcePlugins(configfile:String)
(6)用户无需了解数据源读取的内部细节,只需要配置文件,并通过buildSourcePlugins方法返回所有的数据源的DataFrame实例即可,后续可基于此DataFrame实例实现各种业务逻辑的操作。
下面以Spark计算引擎读取HDFS、Mysql、Mongodb三种数据源为例来进行详细说明,包括如下内容:
(一)编写配置文件:在配置文件中配置HDFS、Mysql、Mongodb三种数据源。配置文件如下:
source{
//source是关键字,表示数据源的配置都是在此处配置
hdfs{
//source插件:hdfs数据源的配置
spark_table="accesslog1"
//读取hdfs数据源,转换为spark的DataFrame数据类型后,将该数据源注册为spark的表,此处配置表名
path="hdfs://spark1234:8020/nginx/accesslog1"
//指定hdfs文件的路径
format="json"
//指定hdfs文件的格式为json
}
mysql{
//source插件:mysql数据库的数据源配置
url="jdbc:mysql://localhost:3306/test"
//配置mysql的jdbc的url连接串
user="root"
//配置mysql的用户名
password="123456"
//配置mysql的密码
query="select topic,partid as id,count(*)as cnt from test.offsetsgroup by topic,partid"
//配置mysql的查询语句,即获取mysql数据的sql
spark_table="my_mysql"
//读取mysql数据源,转换为spark的DataFrame数据类型后,将该数据源注册为spark的表,此处配置表名
}
mongodb{
//source插件:mongodb数据库的数据源配置
uri="mongodb://127.0.0.1/",
//配置mongodb的jdbc的uri连接串
database="test",
//配置mongodb的数据库
collection="inventory",
//配置mongodb的集合
option.readPreference.name="secondaryPreferred"
//配置mongodb的其他选项
}
}
(二)读取配置文件:将配置文件读取到config变量中。
val config=ConfigFactory.parseFile(new File(configfile))
(三)获取插件类对象列表:通过buildSourcePlugins方法,返回配置插件的插件对象列表,返回数据的类型为List[SourcePlugin]。其中,buildSourcePlugins方法的参数为配置文件的路径,即buildSourcePlugins(configfile:String)。
(四)基于返回的插件对象列表,实现后续的各种操作:获取到数据源的dataframe后,可根据业务需要实现各类操作,例如,将dataframe注册为表、多个数据源之间关联、将dataframe保存到HDFS等各类操作。
基于同一发明构思,本发明实施例中还提供了一种基于Spark计算引擎的多源异构数据读取装置,如下面的实施例所述。由于该装置实施例解决问题的原理与基于Spark计算引擎的多源异构数据读取方法相似,因此该装置实施例的实施可以参见方法的实施,重复之处不再赘述。
图2为本发明实施例中提供的一种基于Spark计算引擎的多源异构数据读取装置示意图,如图2所示,该装置包括:配置文件获取模块21、数据处理模块22和多源异构数据读取模块23。
其中,配置文件获取模块21,用于获取Spark计算引擎读取一种或多种数据源的配置文件,其中,配置文件中包含多个插件,每个插件对应一种数据源的配置项;
数据处理模块22,用于根据配置文件,返回一个插件对象列表,其中,插件对象列表中每个插件对象对应一种数据源的插件;
多源异构数据读取模块23,用于基于插件对象列表,根据Spark计算引擎读取一种或多种数据源的源数据,返回Spark计算引擎读取的一种或多种数据源的DataFrame数据。
由上可知,本发明实施例提供的基于Spark计算引擎的多源异构数据读取装置,基于配置和插件的方式,统一Spark计算引擎读取异构数据源的接口,使得每种数据源对应一个插件,每个插件具有不同的配置项,在使用Spark计算引擎读取多种数据源的时候,根据Spark计算引擎读取数据源的配置文件,返回一个插件对象列表,由于该插件对象列表中每个插件对象对应一种数据源的插件,因而,可以基于该插件对象列表,根据Spark计算引擎读取一种或多种数据源的源数据,返回Spark计算引擎读取的一种或多种数据源的DataFrame数据。
通过本发明实施例提供的基于Spark计算引擎的多源异构数据读取装置,基于配置和插件的方式,实现Spark计算引擎对多源异构数据的读取,管理方便,扩展性强。
在一种可选的实施例中,本发明实施例提供的基于Spark计算引擎的多源异构数据读取装置还可以包括:配置模块24,用于接收用户定义的一种或多种数据源的插件;接收用户为每种数据源的插件定义的一个或多个配置项;根据用户定义的一种或多种数据源的插件,以及每种数据源的插件对应的一个或多个配置项,生成Spark计算引擎读取一种或多种数据源的配置文件。
在一种可选的实施例中,本发明实施例提供的基于Spark计算引擎的多源异构数据读取装置中,多源异构数据读取模块23还用于遍历插件对象列表中的每个插件,查找每个插件对应的插件实现类;以及基于查找到的每个插件对应的插件实现类,将每个插件对应数据源的源数据转换Spark计算引擎能够操作的DataFrame数据。
进一步地,本发明实施例提供的基于Spark计算引擎的多源异构数据读取装置中,多源异构数据读取模块23还用于获取预先定义的数据源父类,其中,数据源父类用于实现Spark计算引擎读取各种数据源均需执行的操作功能;获取预先定义的各种数据源对应的插件实现类,其中,每种数据源对应的插件实现类均继承数据源父类所有的操作功能;将配置文件中各种数据源对应的插件,映射至相应的插件实现类。
基于上述任意一种可选的装置实施例,作为一种可选的实施方式,本发明实施例提供的基于Spark计算引擎的多源异构数据读取装置还可以包括:DataFrame数据处理模块25,用于根据插件对象列表,将各种数据源的DataFrame数据,注册为Spark临时表。
基于上述任意一种可选的装置实施例,作为一种可选的实施方式,本发明实施例提供的基于Spark计算引擎的多源异构数据读取装置中,DataFrame数据处理模块25还用于根据插件对象列表,对各种数据源执行关联操作或数据转换处理。
基于上述任意一种可选的装置实施例,作为一种可选的实施方式,本发明实施例提供的基于Spark计算引擎的多源异构数据读取装置还可以包括:DataFrame数据存储模块26,用于根据插件对象列表,将各种数据源的DataFrame数据,存储到分布式文件系统HDFS、HBase数据库或Oracle数据库中。
本发明实施例还提供一种计算机设备,用以解决现有Spark计算引擎在读取多源异构数据的时候,由于对每种数据源的数据格式转换进行代码配置,导致配置工作难度大、效率低的技术问题,该计算机设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述基于Spark计算引擎的多源异构数据读取方法。
本发明实施例还提供一种计算机可读存储介质,用以解决现有Spark计算引擎在读取多源异构数据的时候,由于对每种数据源的数据格式转换进行代码配置,导致配置工作难度大、效率低的技术问题,该计算机可读存储介质存储有执行上述基于Spark计算引擎的多源异构数据读取方法的计算机程序。
综上所述,本发明实施例提供了一种基于Spark计算引擎的多源异构数据读取方法、装置、计算机设备及计算机可读存储介质,基于插件和配置文件的方式,统一Spark计算引擎读取数据源的接口,每类数据源对应一个插件,每个插件有不同的配置项,整合Spark计算引擎内置的数据源、第三方平台提供的数据源和用户自定义的数据源,实现多数据源配置的统一管理,当数据源的配置项发生改变,只需要修改配置文件即可,无需修改代码;对于未定义的数据源,可动态扩展,基于插件的方式,对于不存在的数据源,实现API接口即可,一次实现,可多次使用。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (9)
1.一种基于Spark计算引擎的多源异构数据读取方法,其特征在于,包括:
接收用户定义的一种或多种数据源的插件,其中,不同数据源的插件具有不同的配置项,不同数据源的插件对应不同的插件实现类,所述插件实现类用于通过读取不同数据源的配置项,将每个插件对应数据源的源数据,转换为Spark计算引擎的DataFrame数据;
接收用户为每种数据源的插件定义的一个或多个配置项;
根据用户定义的一种或多种数据源的插件,以及每种数据源的插件对应的一个或多个配置项,生成所述Spark计算引擎读取一种或多种数据源的配置文件;
获取Spark计算引擎读取一种或多种数据源的配置文件,其中,所述配置文件中包含多个插件,每个插件对应一种数据源的配置项;
根据所述配置文件,返回一个插件对象列表,其中,所述插件对象列表中每个插件对象对应一种数据源的插件;
基于所述插件对象列表,根据Spark计算引擎读取一种或多种数据源的源数据,返回所述Spark计算引擎读取的一种或多种数据源的DataFrame数据。
2.如权利要求1所述的方法,其特征在于,基于所述插件对象列表,根据Spark计算引擎读取一种或多种数据源的源数据,返回所述Spark计算引擎读取的一种或多种数据源的DataFrame数据,包括:
遍历所述插件对象列表中的每个插件,查找每个插件对应的插件实现类;
基于查找到的每个插件对应的插件实现类,将每个插件对应数据源的源数据转换Spark计算引擎能够操作的DataFrame数据。
3.如权利要求2所述的方法,其特征在于,在遍历所述插件对象列表中的每个插件,查找每个插件对应的插件实现类之前,所述方法包括:
获取预先定义的数据源父类,其中,所述数据源父类用于实现所述Spark计算引擎读取各种数据源均需执行的操作功能;
获取预先定义的各种数据源对应的插件实现类,其中,每种数据源对应的插件实现类均继承所述数据源父类所有的操作功能;
将所述配置文件中各种数据源对应的插件,映射至相应的插件实现类。
4.如权利要求1至3任一项所述的方法,其特征在于,在基于所述插件对象列表,根据Spark计算引擎读取一种或多种数据源的源数据,返回所述Spark计算引擎读取的一种或多种数据源的DataFrame数据之后,所述方法还包括:
根据所述插件对象列表,将各种数据源的DataFrame数据,注册为Spark临时表。
5.如权利要求1至3任一项所述的方法,其特征在于,在基于所述插件对象列表,根据Spark计算引擎读取一种或多种数据源的源数据,返回所述Spark计算引擎读取的一种或多种数据源的DataFrame数据之后,所述方法还包括:
根据所述插件对象列表,对各种数据源执行关联操作或数据转换处理。
6.如权利要求1至3任一项所述的方法,其特征在于,在基于所述插件对象列表,根据Spark计算引擎读取一种或多种数据源的源数据,返回所述Spark计算引擎读取的一种或多种数据源的DataFrame数据之后,所述方法还包括:
根据所述插件对象列表,将各种数据源的DataFrame数据,存储到分布式文件系统HDFS、HBase数据库或Oracle数据库中。
7.一种基于Spark计算引擎的多源异构数据读取装置,其特征在于,包括:
配置模块,用于接收用户定义的一种或多种数据源的插件;接收用户为每种数据源的插件定义的一个或多个配置项;根据用户定义的一种或多种数据源的插件,以及每种数据源的插件对应的一个或多个配置项,生成所述Spark计算引擎读取一种或多种数据源的配置文件,其中,不同数据源的插件具有不同的配置项,不同数据源的插件对应不同的插件实现类,所述插件实现类用于通过读取不同数据源的配置项,将每个插件对应数据源的源数据,转换为Spark计算引擎的DataFrame数据;
配置文件获取模块,用于获取Spark计算引擎读取一种或多种数据源的配置文件,其中,所述配置文件中包含多个插件,每个插件对应一种数据源的配置项;
数据处理模块,用于根据所述配置文件,返回一个插件对象列表,其中,所述插件对象列表中每个插件对象对应一种数据源的插件;
多源异构数据读取模块,用于基于所述插件对象列表,根据Spark计算引擎读取一种或多种数据源的源数据,返回所述Spark计算引擎读取的一种或多种数据源的DataFrame数据。
8.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6任一项所述基于Spark计算引擎的多源异构数据读取方法。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有执行权利要求1至6任一项所述基于Spark计算引擎的多源异构数据读取方法的计算机程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910981513.8A CN110851513B (zh) | 2019-10-16 | 2019-10-16 | 基于Spark计算引擎的多源异构数据读取方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910981513.8A CN110851513B (zh) | 2019-10-16 | 2019-10-16 | 基于Spark计算引擎的多源异构数据读取方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110851513A CN110851513A (zh) | 2020-02-28 |
CN110851513B true CN110851513B (zh) | 2021-06-08 |
Family
ID=69597588
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910981513.8A Active CN110851513B (zh) | 2019-10-16 | 2019-10-16 | 基于Spark计算引擎的多源异构数据读取方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110851513B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113778502A (zh) * | 2020-06-29 | 2021-12-10 | 北京沃东天骏信息技术有限公司 | 一种数据处理的方法、装置、系统和存储介质 |
CN112288125A (zh) * | 2020-08-31 | 2021-01-29 | 三盟科技股份有限公司 | 一种成绩预测方法、系统、计算机设备及存储介质 |
CN113918238A (zh) * | 2021-09-27 | 2022-01-11 | 中盈优创资讯科技有限公司 | 一种基于Flink的异构数据源同步方法及装置 |
CN116383205A (zh) * | 2023-03-31 | 2023-07-04 | 佛山众陶联供应链服务有限公司 | 一种配置化读取采集数据的方法及装置 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103092980A (zh) * | 2013-01-31 | 2013-05-08 | 中国科学院自动化研究所 | 一种数据自动转换与存储的方法及系统 |
CN103870274A (zh) * | 2014-03-14 | 2014-06-18 | 浪潮集团山东通用软件有限公司 | 一种基于webservice技术下实现异构系统间数据交互的可视化开发组件 |
CN104699723A (zh) * | 2013-12-10 | 2015-06-10 | 北京神州泰岳软件股份有限公司 | 数据交换适配器、异构系统之间数据同步系统和方法 |
CN106250571A (zh) * | 2016-10-11 | 2016-12-21 | 北京集奥聚合科技有限公司 | 一种etl数据处理的方法及系统 |
CN106844643A (zh) * | 2017-01-13 | 2017-06-13 | 王洋 | 一种基于模板引擎的数据库动态生成方法 |
CN109165202A (zh) * | 2018-07-04 | 2019-01-08 | 华南理工大学 | 一种多源异构大数据的预处理方法 |
CN109828796A (zh) * | 2019-01-17 | 2019-05-31 | 武汉精立电子技术有限公司 | 一种基于微内核架构的插件调用方法及装置 |
CN109829009A (zh) * | 2018-12-28 | 2019-05-31 | 北京邮电大学 | 可配置的异构数据实时同步并可视化的系统及方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106156165A (zh) * | 2015-04-16 | 2016-11-23 | 阿里巴巴集团控股有限公司 | 异构数据源之间的数据同步方法和装置 |
-
2019
- 2019-10-16 CN CN201910981513.8A patent/CN110851513B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103092980A (zh) * | 2013-01-31 | 2013-05-08 | 中国科学院自动化研究所 | 一种数据自动转换与存储的方法及系统 |
CN104699723A (zh) * | 2013-12-10 | 2015-06-10 | 北京神州泰岳软件股份有限公司 | 数据交换适配器、异构系统之间数据同步系统和方法 |
CN103870274A (zh) * | 2014-03-14 | 2014-06-18 | 浪潮集团山东通用软件有限公司 | 一种基于webservice技术下实现异构系统间数据交互的可视化开发组件 |
CN106250571A (zh) * | 2016-10-11 | 2016-12-21 | 北京集奥聚合科技有限公司 | 一种etl数据处理的方法及系统 |
CN106844643A (zh) * | 2017-01-13 | 2017-06-13 | 王洋 | 一种基于模板引擎的数据库动态生成方法 |
CN109165202A (zh) * | 2018-07-04 | 2019-01-08 | 华南理工大学 | 一种多源异构大数据的预处理方法 |
CN109829009A (zh) * | 2018-12-28 | 2019-05-31 | 北京邮电大学 | 可配置的异构数据实时同步并可视化的系统及方法 |
CN109828796A (zh) * | 2019-01-17 | 2019-05-31 | 武汉精立电子技术有限公司 | 一种基于微内核架构的插件调用方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110851513A (zh) | 2020-02-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110851513B (zh) | 基于Spark计算引擎的多源异构数据读取方法及装置 | |
US11163739B2 (en) | Database table format conversion based on user data access patterns in a networked computing environment | |
CN102982075B (zh) | 支持访问异构数据源的系统和方法 | |
US9146955B2 (en) | In-memory, columnar database multidimensional analytical view integration | |
Bockermann et al. | The streams framework | |
US8112388B2 (en) | Dependency processing of computer files | |
KR20170019352A (ko) | 데이터 질의 방법 및 장치 | |
US9753960B1 (en) | System, method, and computer program for dynamically generating a visual representation of a subset of a graph for display, based on search criteria | |
US11893011B1 (en) | Data query method and system, heterogeneous acceleration platform, and storage medium | |
US9201700B2 (en) | Provisioning computer resources on a network | |
JP2021530766A (ja) | データウェアハウスへの発行 | |
US8645913B2 (en) | Web-service based generation of business objects | |
CN112860730A (zh) | Sql语句的处理方法、装置、电子设备及可读存储介质 | |
CN113312392A (zh) | 轻量级的规则引擎处理方法及装置 | |
US20150356131A1 (en) | Accessing an external table in parallel to execute a query | |
Agoub et al. | Potential of graph databases in representing and enriching standardized Geodata | |
CN111966692A (zh) | 针对数据仓库的数据处理方法、介质、装置和计算设备 | |
CN115469941A (zh) | 基于FlinkSQL的风控指标计算开发的自动配置处理方法及系统 | |
CN116483859A (zh) | 数据查询方法及装置 | |
KR20130064160A (ko) | Rdf 데이터에 대한 sparql 질의 결과의 개체 관계 변형 시스템 및 그 방법 | |
CN111125216A (zh) | 数据导入Phoenix的方法及装置 | |
Bakken et al. | Chrontext: Portable SPARQL queries over contextualised time series data in industrial settings | |
CN113064914A (zh) | 数据提取方法及装置 | |
CN110362595A (zh) | 一种sql语句动态解析方法 | |
CN116340363B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP02 | Change in the address of a patent holder |
Address after: Room 702-2, No. 4811, Cao'an Highway, Jiading District, Shanghai Patentee after: CHINA UNITECHS Address before: 100872 5th floor, Renmin culture building, 59 Zhongguancun Street, Haidian District, Beijing Patentee before: CHINA UNITECHS |
|
CP02 | Change in the address of a patent holder |