CN108196912A - 一种基于热插拔组件式数据集成方法 - Google Patents
一种基于热插拔组件式数据集成方法 Download PDFInfo
- Publication number
- CN108196912A CN108196912A CN201810003816.8A CN201810003816A CN108196912A CN 108196912 A CN108196912 A CN 108196912A CN 201810003816 A CN201810003816 A CN 201810003816A CN 108196912 A CN108196912 A CN 108196912A
- Authority
- CN
- China
- Prior art keywords
- data
- withdrawal device
- loader
- component
- converter
- 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.)
- Granted
Links
Classifications
-
- 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
-
- 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/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
- G06F9/44526—Plug-ins; Add-ons
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种基于热插拔组件式数据集成方法,通过Java的类动态加载机制,将数据集成组件加载到类加载器中分别进行数据抽取、数据转换和数据载入三步操作。本发明数据集成方法简化了数据集成流程,整个流程只有三个环节,在可用性方面,整个数据集成流程在加载数据集成组件时不需要重启引擎既可以加载组件,此种处理方式可以很大程度上提高系统的运行稳定性和运行效率,同时采取此方法的系统将极大的降低运维成本,并且减少系统因重启而产生的数据丢失等问题,提高用户体验。
Description
技术领域
本发明涉及数据集成技术领域,具体来说,涉及一种基于热插拔组件式数据集成方法。
背景技术
目前市场中有开源产品kettle,kettle的技术为组件式数据集成方式,需要有人机交互界面配置集成任务,任务配置好以后需要发送给集成服务器执行,集成服务器将执行的运行信息记录在数据库中。
Kettle软件的不足:
1、在任务执行过程中不支持对组件的热插拔,任务配置好以后,任务中使用的各个组件以及固化在了任务流程中,如果要替换任务中组件或者调整任务中组件的执行顺序,必须要先停止执行中的任务,对任务重新编辑后才可以;
2、Kettle需要安装才能使用,整个软件依赖较多的外部程序;
3、Kettle对于扩展的组件,需要先在其软件中注册、编译之后才能够被用在集成任务中;
4、Kettle对于功能更强大的分布式的支持和扩展有这很大的局限性。
发明内容
本发明的目的在于提出一种基于热插拔组件式数据集成方法,以解决kettle技术不能够扩展和热插拔的问题。
为实现上述技术目的,本发明的技术方案是这样实现的:
一种基于热插拔组件式数据集成方法,包括以下步骤:
第一步:通过界面上传抽取器、转换器、载入器以及组件,所述组件均被打成Jar包,系统将上传的组件存放在某个固定位置,上传组件时组件名称、抽取器类型、抽取器具体实现类的路径会被记录在系统中;
第二步:当数据集成任务执行时,系统首先会重新启动一个数据集成引擎来执行具体的集成任务;
第三步:数据集成引擎启动后,第一时间会根据集成任务ID初始化任务配置信息,所述任务配置信息包括抽取器需要的数据、转换器需要的数据、载入器需要的数据、抽取器的选择、转换器的选择和载入器的选择;
第四步:数据集成引擎从初始化的配置信息中获取抽取器的Jar包名称和抽取器主类的具体路径,并将抽取器的Jar包名称和抽取器主类的具体路径传递给组件加载器;
第五步:组件加载器获取抽取器的Jar包名称后,去组件存放的路径下面找到并加载相应的Jar包文件,此时整个系统会自动感知并将Jar包文件加载到系统类库中,再根据传入的抽取器主类信息,找到并创建具体的抽取器实现类,将创建好的抽取器实现类交给数据集成引擎;
第六步:数据集成引擎执行抽取器的extract方法,并将初始化的任务配置信息传递给extract方法;
第七步:具体的抽取器执行结束,将执行结果交给数据集成引擎;
第八步:数据集成引擎根据任务配置信息判断是否需要进行数据转换操作,如果需要,则将配置的转换器的Jar包名称,转换器的主类的具体路径传递给组件加载器;
第九步:组件加载器根据转换器的Jar包名称和转换器的主类的具体路径找到并创建具体的转换器实现类,将创建好的转换器实现类交给数据集成引擎;
第十步:数据集成引擎循环遍历抽取结果,将每条抽取结果根据任务配置信息进行数据转换,执行具体转换器的对应方法并传入需要转换数据的字段值,转换的结果会生成一个新的字段,直到遍历结束,转换结束;
第十一步:数据集成引擎根据任务配置信息调用组件加载器生成载入器;
第十二步:数据集成引擎执行载入器的insert方法,并将转换结果数据和任务配置信息传递给insert方法;
第十三步:具体的载入器执行结束,将执行结果交给数据集成引擎。
进一步的,数据集成引擎将整个执行情况录入执行日志。
本发明的有益效果:相比于其他集成技术,本发明在灵活性、方便性等方面有很明显的优势,比如简化了数据集成流程,整个流程只有三个环节(数据抽取、数据转换、数据集成),在可用性方面,整个数据集成流程在加载数据集成组件时不需要重启引擎既可以加载组件,此种处理方式可以很大程度上提高系统的运行稳定性和运行效率,同时采取此方法的系统将极大的降低运维成本,并且减少系统因重启而产生的数据丢失等问题,提高用户体验。
基于本发明可以很容易的开发出基于某些特殊环境的集成方案,比如某些使用率较少的数据库数据集成问题,在部署以后开发针对此数据库的抽取器或者载入器,添加到系统中,在不停止系统的前提下实现数据集成。
本发明非常适合被用于对系统稳定性要求很高的生产环境,很多生产环境需要7*24小时运行,这些系统的停机成本非常高有时候甚至无法停机,所以此技术针对的目标就是满足系统不停机加载组件。
附图说明
图1是本发明所述的数据集成方法的流程图一。
图2是本发明所述的数据集成方法的流程图二。
具体实施方式
下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
如图1-2所示,根据本发明的实施例所述的一种基于热插拔组件式数据集成方法,包括以下步骤:
第一步:通过界面上传抽取器、转换器、载入器以及组件,所述组件均被打成Jar包,系统将上传的组件存放在某个固定位置,上传组件时组件名称、抽取器类型、抽取器具体实现类的路径会被记录在系统中;
第二步:当数据集成任务执行时,系统首先会重新启动一个数据集成引擎来执行具体的集成任务;
第三步:数据集成引擎启动后,第一时间会根据集成任务ID初始化任务配置信息,所述任务配置信息包括抽取器需要的数据、转换器需要的数据、载入器需要的数据、抽取器的选择、转换器的选择和载入器的选择;
第四步:数据集成引擎从初始化的配置信息中获取抽取器的Jar包名称和抽取器主类的具体路径,并将抽取器的Jar包名称和抽取器主类的具体路径传递给组件加载器;
第五步:组件加载器获取抽取器的Jar包名称后,去组件存放的路径下面找到并加载相应的Jar包文件,此时整个系统会自动感知并将Jar包文件加载到系统类库中,再根据传入的抽取器主类信息,找到并创建具体的抽取器实现类,将创建好的抽取器实现类交给数据集成引擎;
第六步:数据集成引擎执行抽取器的extract方法,并将初始化的任务配置信息传递给extract方法;
第七步:具体的抽取器执行结束,将执行结果交给数据集成引擎;
第八步:数据集成引擎根据任务配置信息判断是否需要进行数据转换操作,如果需要,则将配置的转换器的Jar包名称,转换器的主类的具体路径传递给组件加载器;
第九步:组件加载器根据转换器的Jar包名称和转换器的主类的具体路径找到并创建具体的转换器实现类,将创建好的转换器实现类交给数据集成引擎;
第十步:数据集成引擎循环遍历抽取结果,将每条抽取结果根据任务配置信息进行数据转换,执行具体转换器的对应方法并传入需要转换数据的字段值,转换的结果会生成一个新的字段,直到遍历结束,转换结束;
第十一步;数据集成引擎根据任务配置信息调用组件加载器生成载入器;
第十二步:数据集成引擎执行载入器的insert方法,并将转换结果数据和任务配置信息传递给insert方法;
第十三步:具体的载入器执行结束,将执行结果(成果/失败)交给数据集成引擎。
具体的,整个数据集成步骤由集成任务配置串联起来,我们采用拖拽的方式来定义整个任务流程,首先我们将任务步骤分为三步(与传统ETL概念一致),任务从抽取器开始,由载入器结束,整个流程中可以包含一个或多个转换器。
配置集成任务需要指定数据源头的相关信息,比如集成任务由Oracle开始,那么就需要指定Oracle库的连接地址、用户名、密码还需要明确抽取数据的表名,这些信息在执行时都会以参数的方式传递给具体的抽取器。
配置集成任务需要指定目标端的相关信息,比如集成任务将数据写入Solr中,那么就需要指定Solr库的连接地址、需要写入数据的collection信息。
集成任务配置信息会被存储下来,当需要执行的时候,这些信息将会被初始化到集成任务上下文中。
数据抽取,主要是从源头将数据提取分离出来;这一步我们会根据不同的数据源头匹配不同的数据抽取器,比如我们针对Oracle数据库有Oracle抽取器、针对Kafka有Kafka抽取器,每一种抽取器都实现了抽取器接口(ExtractInterface),接口中定义了抽取函数(extract),抽取器不同,抽取函数中的具体实现也不同,抽取器接收一个参数(config),这个参数是集成任务配置上下文信息,其中包含抽取源头的连接信息(包括:数据库连接信息、用户名、密码,需要抽取数据的表名,需要抽取数据的字段信息),载入目标的连接信息(包括:数据库连接信息、用户名、密码,需要载入数据的表名,需要写入数据的字段信息),还包括任务转换的具体配置信息(包括:需要转换的字段,转换后字段的具体信息)。
抽取器通过获取任务上下文配置信息(数据库连接信息、用户名、密码,需要抽取数据的表名,需要抽取数据的字段信息),来连接到数据源头,执行数据抽取动作。
抽取器在使用时需要配置到系统中,并且将实现类的Jar包上传到系统中。
数据转换,主要负责将数据抽取步骤获取的数据按照需要转换成结果数据,并且将结果数据交给数据集成步骤(集成任务的下一步)。我们将数据转换定义如下,相同类型的转换归为一类,比如字符串类型的转换我们归为一类,其中包含字符串截取、字符串去空、字符串替换。
转换器获取集成任务配置上下文信息(需要转换的字段,转换后字段的具体信息),根据这些信息转换器可以对上一步发送来的数据按照要求进行处理和转换,处理后的数据将交由下一步进行继续处理。
数据集成,主要将上一步处理完的数据写入到数据目标中;这一步我们同样会根据不同的目标匹配不同的数据载入器,比如我们有Oracle载入器,Solr载入器,HBase载入器,每一种载入器都实现载入器接口(InsertInterface),接口中定义了载入函数(insert),载入器不同,函数的具体实现也不同,载入函数接收两个参数,一个是集成任务配置上下文信息(config),一个是需要写入数据目标中的具体数据,与抽取函数接收的参数一致,载入器从上下文中获取数据目标的连接信息、用户名、密码等信息。
载入器通过获取的集成任务配置上下文信息(数据库连接信息、用户名、密码,需要载入数据的表名,需要写入数据的字段信息)来连接数据目标,将上一步处理完的数据写入到具体的数据目标中。
载入器在使用时需要配置到系统中,并且将实现类的Jar包上传到系统中。
在整个流程中,最为关键的就是数据集成引擎和组件加载器,数据集成引擎可以动态的调用组件加载器来生成具体的抽取器实例、转换器实例、载入器实例。
组件加载器每次会去组件存放路径中查找需要的组件Jar包并加载Jar包,利用Java特有的特性可以做到根据需要去找符合的Jar包文件,并且每次加载时不需要重启系统,在集成任务完成以后动态加载的抽取器、转换器、载入器自动销毁,有新的集成任务执行时再重新进行加载,保证了组件能够被随时加载,使用结束自动卸载的目的。
整个解决方法中还有一个较为关键的步骤,记录集成任务执行步骤,记录集成任务由哪个抽取器组件开始,下一步是哪个组件,知道最终由哪个载入器组件完成,这些信息都会记录在与集成引擎配套的内嵌数据库中。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (2)
1.一种基于热插拔组件式数据集成方法,其特征在于,包括以下步骤:
第一步:通过界面上传抽取器、转换器、载入器以及组件,所述组件均被打成Jar包,系统将上传的组件存放在某个固定位置,上传组件时组件名称、抽取器类型、抽取器具体实现类的路径会被记录在系统中;
第二步:当数据集成任务执行时,系统首先会重新启动一个数据集成引擎来执行具体的集成任务;
第三步:数据集成引擎启动后,第一时间会根据集成任务ID初始化任务配置信息,所述任务配置信息包括抽取器需要的数据、转换器需要的数据、载入器需要的数据、抽取器的选择、转换器的选择和载入器的选择;
第四步:数据集成引擎从初始化的配置信息中获取抽取器的Jar包名称和抽取器主类的具体路径,并将抽取器的Jar包名称和抽取器主类的具体路径传递给组件加载器,
第五步:组件加载器获取抽取器的Jar包名称后,去组件存放的路径下面找到并加载相应的Jar包文件,此时整个系统会自动感知并将Jar包文件加载到系统类库中,再根据传入的抽取器主类信息,找到并创建具体的抽取器实现类,将创建好的抽取器实现类交给数据集成引擎;
第六步:数据集成引擎执行抽取器的extract方法,并将初始化的任务配置信息传递给extract方法;
第七步:具体的抽取器执行结束,将执行结果交给数据集成引擎;
第八步:数据集成引擎根据任务配置信息判断是否需要进行数据转换操作,如果需要,则将配置的转换器的Jar包名称,转换器的主类的具体路径传递给组件加载器;
第九步:组件加载器根据转换器的Jar包名称和转换器的主类的具体路径找到并创建具体的转换器实现类,将创建好的转换器实现类交给数据集成引擎;
第十步:数据集成引擎循环遍历抽取结果,将每条抽取结果根据任务配置信息进行数据转换,执行具体转换器的对应方法并传入需要转换数据的字段值,转换的结果会生成一个新的字段,直到遍历结束,转换结束;
第十一步:数据集成引擎根据任务配置信息调用组件加载器生成载入器;
第十二步:数据集成引擎执行载入器的insert方法,并将转换结果数据和任务配置信息传递给insert方法;
第十三步:具体的载入器执行结束,将执行结果交给数据集成引擎。
2.根据权利要求1所述的数据集成方法,其特征在于,数据集成引擎将整个执行情况录入执行日志。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810003816.8A CN108196912B (zh) | 2018-01-03 | 2018-01-03 | 一种基于热插拔组件式数据集成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810003816.8A CN108196912B (zh) | 2018-01-03 | 2018-01-03 | 一种基于热插拔组件式数据集成方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108196912A true CN108196912A (zh) | 2018-06-22 |
CN108196912B CN108196912B (zh) | 2021-04-23 |
Family
ID=62587559
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810003816.8A Active CN108196912B (zh) | 2018-01-03 | 2018-01-03 | 一种基于热插拔组件式数据集成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108196912B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111026535A (zh) * | 2019-12-12 | 2020-04-17 | 成都九洲电子信息系统股份有限公司 | 一种非标准化的热插拔式数据批量处理方法 |
CN113010531A (zh) * | 2021-02-05 | 2021-06-22 | 成都库珀区块链科技有限公司 | 一种基于有向无环图的区块链baas系统任务调度框架 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015171117A1 (en) * | 2014-05-06 | 2015-11-12 | Hewlett-Packard Development Company, L.P. | Backend analysis and transformation |
CN105389402A (zh) * | 2015-12-29 | 2016-03-09 | 曙光信息产业(北京)有限公司 | 一种面向大数据的etl方法和装置 |
CN105975524A (zh) * | 2016-04-28 | 2016-09-28 | 成都理工大学 | 一种用于地质监测的数据集成方法和系统 |
CN106202346A (zh) * | 2016-06-29 | 2016-12-07 | 浙江理工大学 | 一种数据加载清洗引擎、调度与存储系统 |
-
2018
- 2018-01-03 CN CN201810003816.8A patent/CN108196912B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015171117A1 (en) * | 2014-05-06 | 2015-11-12 | Hewlett-Packard Development Company, L.P. | Backend analysis and transformation |
CN105389402A (zh) * | 2015-12-29 | 2016-03-09 | 曙光信息产业(北京)有限公司 | 一种面向大数据的etl方法和装置 |
CN105975524A (zh) * | 2016-04-28 | 2016-09-28 | 成都理工大学 | 一种用于地质监测的数据集成方法和系统 |
CN106202346A (zh) * | 2016-06-29 | 2016-12-07 | 浙江理工大学 | 一种数据加载清洗引擎、调度与存储系统 |
Non-Patent Citations (2)
Title |
---|
崔有文,周金海: "基于KETTLE的数据集成研究", 《计算机技术与发展》 * |
无可奈何SOS: "Kettle 4.2源码分析第二讲一Kettle插件结构体系简介", 《HTTPS://WWW.CNBLOGS.COM/WUKENAIHE/P/3212385.HTML》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111026535A (zh) * | 2019-12-12 | 2020-04-17 | 成都九洲电子信息系统股份有限公司 | 一种非标准化的热插拔式数据批量处理方法 |
CN111026535B (zh) * | 2019-12-12 | 2023-03-21 | 成都九洲电子信息系统股份有限公司 | 一种非标准化的热插拔式数据批量处理方法 |
CN113010531A (zh) * | 2021-02-05 | 2021-06-22 | 成都库珀区块链科技有限公司 | 一种基于有向无环图的区块链baas系统任务调度框架 |
CN113010531B (zh) * | 2021-02-05 | 2022-11-01 | 成都库珀创新科技有限公司 | 一种基于有向无环图的区块链baas系统任务调度框架 |
Also Published As
Publication number | Publication date |
---|---|
CN108196912B (zh) | 2021-04-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103731483B (zh) | 一种基于云计算的虚拟文件系统 | |
CN106022007B (zh) | 面向生物组学大数据计算的云平台系统及方法 | |
CN110275872A (zh) | 版本自动部署方法、装置、计算机设备和存储介质 | |
CN108363587A (zh) | 应用程序运行监控方法、装置、计算机设备和存储介质 | |
CN111126781A (zh) | Rpa业务流程的创建方法及系统 | |
CN104899016B (zh) | 调用堆栈关系获取方法及装置 | |
CN107688611B (zh) | 一种基于saltstack的Redis键值管理系统及方法 | |
CN102810070A (zh) | 高性能业务能力封装流程引擎及其流程控制方法 | |
CN108804300A (zh) | 自动化测试方法及系统 | |
CN106649164A (zh) | 一种硬件接口管理方法 | |
CN101958987A (zh) | 电信业务数据动态转换的方法及其系统 | |
CN101615159A (zh) | 离线测试系统及其本地数据管理方法及相应的装置 | |
CN104750606B (zh) | 一种基于反射的自动化测试方法 | |
CN109634607A (zh) | 一种代码自动生成的方法及装置 | |
US20130198333A1 (en) | Method and device for recording and reproducing web operation | |
CN108196912A (zh) | 一种基于热插拔组件式数据集成方法 | |
CN111966451B (zh) | 一种数据抽取方法、系统、设备以及介质 | |
CN102594618A (zh) | 实现存储局域网络存储设备测试的方法及装置 | |
CN102385527A (zh) | 一种提升业务脚本执行效率的装置及方法 | |
CN107894945A (zh) | 埋点添加方法、移动终端及计算机可读存储介质 | |
WO2020142524A1 (en) | Decision intelligence system and method | |
CN102982217B (zh) | 丝印的处理方法和装置 | |
KR20210147074A (ko) | 맞춤형 인공 지능 생산 라인을 실행하기 위한 장치, 방법, 기기 및 매체 | |
CN102508762A (zh) | 数据交互控制装置和数据交互控制方法 | |
CN106371931A (zh) | 一种基于Web框架的高性能地学计算服务系统 |
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 |