基于Spark组件的数据处理方法、装置、设备及介质与流程

文档序号:28496490发布日期:2022-01-15 04:10阅读:112来源:国知局
基于Spark组件的数据处理方法、装置、设备及介质与流程
基于spark组件的数据处理方法、装置、设备及介质
技术领域
1.本发明涉及大数据技术领域,尤其涉及一种基于spark组件的数据处理方法、装置、计算机设备及计算机可读存储介质。


背景技术:

2.数据仓库技术(extract-transform-load,etl)用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。etl将分布的、异构数据源中的数据抽取到临时中间层后进行清洗、转换、集成,最后将数据加载到数据仓库中。市面上常见的etl工具有informatica powercenter、ibm datastage、 kettle、talend、datax、xplenty、datapipeline等,但由于这些etl工具或者无法适应海量数据的处理需求,或者数据清洗的复杂性不够、或者易用性不好、使用起来不方便、甚至需要二次开发。


技术实现要素:

3.基于此,在本实施例中,提供了一种基于spark组件的数据处理方法、装置、计算机设备及计算机可读存储介质,可提高基于etl框架的数据处理的操作便利性。
4.在本发明的第一部分,提供了一种基于spark组件的数据处理方法,所述方法包括:获取sql数据处理指令,确定与所述sql数据指令对应的至少一个处理参数;将所述至少一个处理参数传输给预设的etl框架,创建spark会话控制;基于所述spark会话控制,根据所述至少一个处理参数确定与所述sql数据处理指令对应的目标数据库以及目标数据处理方式,并基于所述目标数据库和目标数据处理方式进行数据处理。
5.可选的,所述将所述至少一个处理参数传输给预设的etl框架,创建spark会话控制的步骤,还包括:对所述spark会话控制进行初始化处理。
6.可选的,所述基于所述spark会话控制,根据所述至少一个处理参数确定与所述sql数据处理指令对应的目标数据库以及目标数据处理方式的步骤,还包括:基于所述spark会话控制加载所述至少一个处理参数;确定所述spark会话控制加载所述至少一个处理参数的参数加载类型和参数加载模式,根据所述参数加载类型确定所述目标数据库,根据所述参数加载模式确定所述目标处理方式。
7.可选的,所述目标数据库包括db数据库、es数据库、图数据库neo4j、文件存储数据库mongodb或文件系统数据库中至少一个;所述基于所述目标数据库和目标数据处理方式进行数据处理的步骤,还包括:基于所述至少一个处理参数,对所述目标数据库进行删除、插入、更新或覆盖操作。
8.可选的,所述基于所述目标数据库和目标数据处理方式进行数据处理的步骤之后,还包括:将进行数据处理的时间戳存储至dat目录下,将进行数据处理的日志文件存储至log目录下。
9.在本发明的第二部分,提供了一种基于spark组件的数据处理装置,所述装置包括:参数获取模块,用于获取sql数据处理指令,确定与所述sql数据指令对应的至少一个处理参数;spark创建模块,用于将所述至少一个处理参数传输给预设的etl框架,创建spark会话控制;spark数据处理模块,用于基于所述spark会话控制,根据所述至少一个处理参数确定与所述sql数据处理指令对应的目标数据库以及目标数据处理方式,并基于所述目标数据库和目标数据处理方式进行数据处理。
10.可选的,所述spark创建模块还用于对所述spark会话控制进行初始化处理。
11.可选的,所述spark数据处理模块还用于基于所述spark会话控制加载所述至少一个处理参数;确定所述spark会话控制加载所述至少一个处理参数的参数加载类型和参数加载模式,根据所述参数加载类型确定所述目标数据库,根据所述参数加载模式确定所述目标处理方式。
12.可选的,所述spark数据处理模块还用于将进行数据处理的时间戳存储至dat目录下,将进行数据处理的日志文件存储至log目录下。
13.可选的,所述目标数据库包括db数据库、es数据库、图数据库neo4j、文件存储数据库mongodb或文件系统数据库中至少一个。
14.可选的,所述目标数据处理方式包括删除、插入、更新或覆盖操作中的至少一个。
15.在本发明的第三部分,提供了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:获取sql数据处理指令,确定与所述sql数据指令对应的至少一个处理参数;将所述至少一个处理参数传输给预设的etl框架,创建spark会话控制;基于所述spark会话控制,根据所述至少一个处理参数确定与所述sql数据处理指令对应的目标数据库以及目标数据处理方式,并基于所述目标数据库和目标数据处理方式进行数据处理。
16.在本发明的第四部分,提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:获取sql数据处理指令,确定与所述sql数据指令对应的至少一个处理参数;将所述至少一个处理参数传输给预设的etl框架,创建spark会话控制;基于所述spark会话控制,根据所述至少一个处理参数确定与所述sql数据处理指令对应的目标数据库以及目标数据处理方式,并基于所述目标数据库和目标数据处理方式进行数据处理。
17.采用本发明实施例,具有如下有益效果:在本发明实施例中,提供了一种基于spark组件的数据处理方法、装置、设备及计
算机可读存储介质之后,基于etl框架,对spark组件进行封装,然后可以直接通过标准的sql 语句来实现对各类数据库的数据处理操作。具体的,获取sql数据处理指令,然后将sql数据处理指令的处理参数传递到etl框架,并通过etl框架创建spark会话控制,然后基于该spark会话控制加载处理参数,确定目标数据库和目标处理方式,并通过目标处理方式对目标数据库进行数据处理,完成基于spark组件的etl框架的数据处理过程。也就是说,采用了上述基于spark组件的数据处理方法及装置之后,通过对spark组件的封装,可实现对各类数据库的各种读写操作,不用针对每一个数据库分别进行数据处理工具的编写,也就是说,在本实施例中,对数据库中的数据的处理与数据库无关,可以处理不同的数据库以及异构数据库的数据,并且可以扩展到各种应用场景,提高数据处理的便利性和标准化。
附图说明
18.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
19.其中:图1为一个实施例中一种etl框架的结构示意图;图2为一个实施例中一种基于spark组件的数据处理方法的流程示意图;图3为一个实施例中一种基于spark组件的数据处理方法的流程示意图;图4为一个实施例中一种基于spark组件的数据处理装置的结构示意图;图5为一个实施例中运行上述基于spark组件的数据处理方法的计算机设备的结构示意图。
具体实施方式
20.现在将参考附图更全面地描述示例实施例。然而,示例实施例能够以多种形式实施,且不应被理解为限于在此阐述的实施例。相反,提供这些实施例使得本公开将全面和完整,并将示例实施例的构思全面地传达给本领域的技术人员。在图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。
21.此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本公开的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、材料、装置、步骤等。在其它情况下,不详细示出或描述公知结构、方法、装置、实现、材料或者操作以避免模糊本公开的各方面。
22.附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个软件硬化的模块中实现这些功能实体或功能实体的一部分,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
23.在本实施例中,提供了一种基于spark组件的数据处理方法,可以基于spark的分布式计算引擎的etl框架来完成对数据的处理操作,简化了etl的处理流程。
24.首先,在本实施例中提供的etl框架进行说明。
25.先说明tempo-spark2、tempo-common、tempo-udf这三个包:tempo-spark2:在tempo-spark2中创建drivermain、basicsql、loaddb、loades、loadfile、loadhase、loadhive、loadmongodb、loadneo4j等类,通过这些类来完成了spark session(spark会话控制)的初始化、spark的参数配置、spark的调用、以及配置文件的获取;通过标准的配置文件cfg,实现各类数据库的连接;并按照数据处理方式,完成对数据库的各类操作;通过读取sparksql文件,来实现各类数据的处理逻辑,完成数据的加载。最后将每次处理batchid以及每个文件、每张表的处理时间保存到dat目录下,将对每个文件、每张表的处理日志写到log目录下。
26.tempo-common:在tempo-common中为basicsql、loaddb、loades、loadfile、loadhase、loadhive、loadmongodb、loadneo4j等类创建了相应的基类,在基类中完成了对各类数据库的连接,完成各自的通用方法的实现。
27.tempo-udf:在tempo-udf中,完成各通用方法的实现,如:序列生成器、人名格式化方法、企业名称格式化方法、半角转全角、数组排序、数组交集、数组合并等方法。
28.在上面的三个包完成了对spark组件的封装,实现了对各类数据库的各种读写操作,形成了etl框架。
29.通过将数据库的连接信息写入到dbc文件中,通过将数据处理的配置信息写入到cfg文件,通过将对数据的各类数据处理逻辑以标准的sparksql语言写入到sparksql文件中,etl框架就可以基于spark完成整个数据处理的操作。由于在这个过程中开发人员只需要熟悉标准的sparksql就可以完成对各类数据库的操作,各类扩展函数由etl框架处理,各类具体的解析完全由etl框架解析好后交给spark进行分布式计算处理,大大地简化了整个etl的处理过程。
30.如下为etl框架的目录结构:
其中,目录结构通过初始化自动创建,bin目录下是由shell脚本封装的etl框架,dat目录是数据处理的时间戳和批次标识符,in目录下是需要处理的文件,log目录下是etl的日志文件,lib目录下是etl框架需要的jar包,out目录下是处理好的输出文件,sql目录下是每张表的数据处理逻辑。
31.其中,etl_id可以确定一个唯一的etljob以及相关的所有元数据metadata,etl_id由两部分组成,project_id和feed_id,例如:apollo_dw.compy_basicinfo。其中,元数据驱动可以通过 来关联一个 etl job 所有的元数据(cfg/sql/log/dat),并且通过标准化的 cfg 文件,控制同一类 etl job 的不同行为,从而实现对不同的数据库的数据处理。
32.请参见图1,给出了etl框架的结构示意图。其中通过连接信息connection provider将数据库db以及es连接,以连入spark组件,spark组件是通过tempo-spark2、tempo-common、tempo-udf包进行封装的,并且通过tempo-spark2实现对spark组件的创建、初始化、参数配置和调用,以实现对数据库的数据处理。
33.进一步的,请参见图2,图2给出了基于spark组件的数据处理方法的流程示意图。其中,该基于spark组件的数据处理方法包括如图2所述的步骤s102-s106:步骤s102:获取sql数据处理指令,确定与所述sql数据指令对应的至少一个处理参数。
34.在完成了对spark组件的风险之后,etl框架可以直接基于spark组件完成对数据库的数据处理操作。
35.具体的,开发人员可以直接输入sql语句来实现对数据库的数据处理操作,而不需要复杂的语句来实现。具体的,开发人员可以直接输入sql数据处理指令(该sql数据处理指令为标准的spark aql语句)来通过etl框架进行数据处理操作。在接收到开发人员输入的sql数据处理指令之后,即可通过etl框架对sql数据处理指令进行解析,以获取该sql数据处理指令中的处理参数。其中,sql数据处理指令中的处理参数不止一个,例如,包含了sql数据处理指令对应的需要进行处理的数据库对象(目标数据库),以及具体的数据处理方式(目标数据处理方式,例如删除、插入、覆盖等数据处理方式中的一个或多个)。
36.步骤s104:将所述至少一个处理参数传输给预设的etl框架,创建spark会话控制。
37.在完成了对至少一个处理参数的解析之后,进一步将得到的至少一个处理参数传递到etl框架以进行进一步的数据处理操作。
38.在本实施例中,通过etl框架创建spark session(spark会话控制),通过前述创建的包tempo-spark2来实现对spark session的初始化、参数配置等,以为开发人员提供一个统一的来切入点来使用spark的各项功能,以实现对大数据的分布式计算。
39.步骤s106:基于所述spark会话控制,根据所述至少一个处理参数确定与所述sql数据处理指令对应的目标数据库以及目标数据处理方式,并基于所述目标数据库和目标数据处理方式进行数据处理。
40.如前所述,处理参数中包含了待处理的数据库对象,目标数据库,以及对目标数据库需要进行的数据处理方式,目标数据处理方式,基于此,可以通过该目标数据处理方式对目标数据库进行数据处理。其中,对数据的处理过程是基于spark会话控制进行的。在本实施例中,通过tempo-spark2包来实现对各个数据库的处理。其中,通过tempo-spark2包可以对各个数据库之间的连接以及对数据库的各类数据处理操作,通过读取spark sql文件,来实现对各类数据的处理逻辑,从而可以实现对各种标准的、或不标准的、或异构的数据库的数据处理操作,避免不同的数据库需要进行不同的开发,以提高数据库操作的便利性。
41.在一个具体的实施例中,基于所述spark会话控制加载所述至少一个处理参数;然后确定所述spark会话控制加载所述至少一个处理参数的参数加载类型和参数加载模式,根据所述参数加载类型确定所述目标数据库,根据所述参数加载模式确定所述目标处理方式。例如,根据参数加载类型确定目标数据库是哪一个,并且根据参数加载模式来确定对目标数据库的目标处理方式,然后基于该目标处理方式来对目标数据库进行数据处理,以完成基于sql数据处理指令的数据处理过程。
42.其中,所述目标数据库包括db数据库、es数据库、图数据库neo4j、文件存储数据库mongodb或文件系统数据库中至少一个,也可以是其他任意的数据库或者异构数据库,不需要针对不同的数据库来分别便携对应的数据处理工具。而上述对目标数据库的目标处理方式,可以是对目标数据库中所包含的数据的删除、插入、更新、覆盖等各种数据处理方式中的一个或多个。
43.在完成了基于sql数据处理指令的数据处理之后,还需要将当前的数据处理对应的时间戳存储至etl框架的目录结构中dat目录下对象的timestamp文件中,并且将进行数据处理的etl日志文件写入到存储至etl框架的目录结构中log目录下对应的文件中。
44.请参见图3,给出了上述基于spark组件的数据处理方法的另一个流程示意图。其中,在开发人员需要进行数据处理的时候,根据输入的sql数据处理指令中包含的处理参数,传递到etl框架,然后通过etl框架创建spark session并且对spark session进行初始化。根据etl框架加载处理参数对应的参数加载类型来判断对应的需要进行数据处理的数据库,并加载相应的数据库;然后根据根据etl框架加载处理参数对应的参数加载模式来确定对数据库中的数据进行处理的数据处理方式,例如,可以是删除、插入、更新、覆盖等,并执行相应的数据处理方式。在完成对数据库的更新之后,将相应的数据处理的时间(时间戳)存储至etl框架下的dat目录下,具体存储至dat目录下对应的timestamp文件中,并且,生成etl框架的日志文件,并且写入到etl况下下的log目录下对应的文件中。至此完成了基于etl框架的对sql数据处理指令的处理过程,然后可以停止响应的spark,终止这个数据处理过程。
45.在另一方面,本发明实施例还提供了一种基于spark组件的数据处理装置,具体的请参见图4,该基于spark组件的数据处理装置包括:参数获取模块102,用于获取sql数据处理指令,确定与所述sql数据指令对应的至少一个处理参数;spark创建模块104,用于将所述至少一个处理参数传输给预设的etl框架,创建spark会话控制;spark数据处理模块106,用于基于所述spark会话控制,根据所述至少一个处理参数确定与所述sql数据处理指令对应的目标数据库以及目标数据处理方式,并基于所述目标数据库和目标数据处理方式进行数据处理。
46.在一个可选的实施例中,所述spark创建模块104还用于对所述spark会话控制进行初始化处理。
47.在一个可选的实施例中,所述spark数据处理模块106还用于基于所述spark会话控制加载所述至少一个处理参数;确定所述spark会话控制加载所述至少一个处理参数的参数加载类型和参数加载模式,根据所述参数加载类型确定所述目标数据库,根据所述参数加载模式确定所述目标处理方式。
48.在一个可选的实施例中,所述spark数据处理模块106还用于将进行数据处理的时间戳存储至dat目录下,将进行数据处理的日志文件存储至log目录下。
49.在一个可选的实施例中,所述目标数据库包括db数据库、es数据库、图数据库neo4j、文件存储数据库mongodb或文件系统数据库中至少一个。
50.在一个可选的实施例中,所述目标数据处理方式包括删除、插入、更新或覆盖操作中的至少一个。
51.图5给出了一个实施例中实现上述基于spark组件的数据处理方法的计算机设备的内部结构图。如图5所示,该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,存储器包括非易失性存储介质和内存储器。该计算机设备的非易失性存储介质存储有操作系统,还可存储有计算机程序,该计算机程序被处理器执行时,可使得处理器实现上述方法。该内存储器中也可储存有计算机程序,该计算机程序被处理器执行时,可使得处理器执行上述方法。本领域技术人员可以理解,图5中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体
的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
52.采用本发明实施例,具有如下有益效果:在本发明实施例中,提供了一种基于spark组件的数据处理方法、装置、设备及计算机可读存储介质之后,基于etl框架,对spark组件进行封装,然后可以直接通过标准的sql 语句来实现对各类数据库的数据处理操作。具体的,获取sql数据处理指令,然后将sql数据处理指令的处理参数传递到etl框架,并通过etl框架创建spark会话控制,然后基于该spark会话控制加载处理参数,确定目标数据库和目标处理方式,并通过目标处理方式对目标数据库进行数据处理,完成基于spark组件的etl框架的数据处理过程。也就是说,采用了上述基于spark组件的数据处理方法及装置之后,通过对spark组件的封装,可实现对各类数据库的各种读写操作,不用针对每一个数据库分别进行数据处理工具的编写,也就是说,在本实施例中,对数据库中的数据的处理与数据库无关,可以处理不同的数据库以及异构数据库的数据,并且可以扩展到各种应用场景,提高数据处理的便利性和标准化。
53.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink) dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
54.以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
55.以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本技术专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术专利的保护范围应以所附权利要求为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1