CN108196912B - 一种基于热插拔组件式数据集成方法 - Google Patents

一种基于热插拔组件式数据集成方法 Download PDF

Info

Publication number
CN108196912B
CN108196912B CN201810003816.8A CN201810003816A CN108196912B CN 108196912 B CN108196912 B CN 108196912B CN 201810003816 A CN201810003816 A CN 201810003816A CN 108196912 B CN108196912 B CN 108196912B
Authority
CN
China
Prior art keywords
data
data integration
extractor
loader
specific
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
Application number
CN201810003816.8A
Other languages
English (en)
Other versions
CN108196912A (zh
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.)
Xinjiang Sailing Information Technology Co ltd
Original Assignee
Xinjiang Sailing 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 Xinjiang Sailing Information Technology Co ltd filed Critical Xinjiang Sailing Information Technology Co ltd
Priority to CN201810003816.8A priority Critical patent/CN108196912B/zh
Publication of CN108196912A publication Critical patent/CN108196912A/zh
Application granted granted Critical
Publication of CN108196912B publication Critical patent/CN108196912B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • G06F9/44526Plug-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所述的数据集成方法,其特征在于,数据集成引擎将整个执行情况录入执行日志。
CN201810003816.8A 2018-01-03 2018-01-03 一种基于热插拔组件式数据集成方法 Active CN108196912B (zh)

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 CN108196912A (zh) 2018-06-22
CN108196912B true 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)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111026535B (zh) * 2019-12-12 2023-03-21 成都九洲电子信息系统股份有限公司 一种非标准化的热插拔式数据批量处理方法
CN113010531B (zh) * 2021-02-05 2022-11-01 成都库珀创新科技有限公司 一种基于有向无环图的区块链baas系统任务调度框架

Citations (4)

* Cited by examiner, † Cited by third party
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 浙江理工大学 一种数据加载清洗引擎、调度与存储系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Title
Kettle 4.2源码分析第二讲一Kettle插件结构体系简介;无可奈何SOS;《https://www.cnblogs.com/wukenaihe/p/3212385.html》;20130725;全文 *
基于KETTLE的数据集成研究;崔有文,周金海;《计算机技术与发展》;20150430;第153-157页 *

Also Published As

Publication number Publication date
CN108196912A (zh) 2018-06-22

Similar Documents

Publication Publication Date Title
CN106970873B (zh) 线上mock测试方法、装置及系统
CN105069142A (zh) 数据增量抽取转换与分发系统及方法
CN106843936B (zh) 一种自动化部署Web应用环境的方法
CN1329836C (zh) 定位程序异常的方法
US20150222696A1 (en) Method and apparatus for processing exploding data stream
CN104536737A (zh) 一种基于组件的程序开发框架
CN111857801B (zh) 一种移动应用的构建方法
CN108196912B (zh) 一种基于热插拔组件式数据集成方法
CN108804300A (zh) 自动化测试方法及系统
CN104317589A (zh) 一种用于加载动态链接库的代码自动生成方法及装置
CN110555074B (zh) 定时抽取和加工数据的方法、终端及计算机可读存储介质
CN103793249A (zh) 一种Java虚拟机中类库的多线程预加载方法
CN101634946B (zh) 一种rfid构件的生成方法
CN114115838A (zh) 一种基于分布式组件和云平台的数据交互方法及系统
CN101236503A (zh) 一种热部署实体类组件
CN103092866A (zh) 数据监控方法及监控装置
CN102609357B (zh) 符合autosar标准自动化测试的测试案例动态构建方法
US20130086572A1 (en) Generation apparatus, generation method and computer readable information recording medium
CN104182344A (zh) 一种覆盖安装测试方法及装置
CN103064722A (zh) 一种程序统一编译方法及系统
CN110286940B (zh) 智能电视日志生成方法
US20120102473A1 (en) Abstract method removal for reduced memory footprint with optimizer tool
US20050066337A1 (en) Portable operating environment
CN108228192A (zh) 一种面向服务的机载软件的动态管理的实现方法
CN112732828A (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