一种数据抽取、转换、加载etl的方法和设备的制造方法_2

文档序号:9217343阅读:来源:国知局
败后执行的下一级串行ETL任务的执行触发条件配置为已成立。
[0047]当上述下一级串行ETL任务为终级串行任务时,即该下一级串行ETL任务没有下下级串行ETL任务,当该终级串行ETL任务执行成功后,服务器将该终级串行ETL任务的执行触发条件由已成立配置为未成立,便于下次执行时能够顺利进行。
[0048]为使本发明的目的、技术方案和优点表达的更加清楚明白,下面结合附图及具体实施例对本发明再作进一步详细的说明。
[0049]本实施例采用图1所示的组网图,以抽取十个仓库数据库的数据,并将抽取的数据汇总到HADOOP平台上进行数据处理为例对本发明技术方案作进一步说明。图3为本实施例的流程图,如图3所示,包括以下步骤:
[0050]步骤301:服务器将ETL任务的脚本语言文件以及该ETL任务的任务标识发送给对应的客户端。
[0051]本步骤中,假设完成抽取十个仓库数据库的订单数据并将其汇总到HADOOP平台进行数据处理需要三个串行任务实现,分别为任务1、任务2、任务3,其中:
[0052]任务I的脚本语言文件通过DOS语言实现,并调用SQL Server的bcp命令将十个仓库的订单数据抽取为数据文件,并将抽取到的数据文件保存到Windows系统中;任务2的脚本语言文件通过Python语言实现,并调用FTP命令将任务I保存在Windows系统中的数据文件复制到Linux系统中;任务3的脚本语言文件通过JAVA语言实现,并调用HIVE命令将复制在Linux系统中的数据文件推送到HADOOP平台的HADOOP表中,并对HADOOP表中的数据文件执行HIVE运算,将数据文件中的订单数据进行汇总,执行数据汇总后,通过sqoop命令将汇总后的订单数据推送到第三方数据库中。
[0053]上述任务I每天21点执行一次,假设下次执行时间为2014年6月2日21点,任务2的执行触发条件为任务I执行成功,任务3的执行触发条件为任务2执行成功。
[0054]其中,DOS语言、Python语言、JAVA语言等均为脚本语言,本步骤中通过各种脚本语言实现每个ETL任务,因此,无论ETL任务包括多复杂的数据逻辑处理,本步骤都可以通过某种合适的脚本语言实现;当用脚本语言编写ETL任务时,涉及到比较常见的数据处理,可以通过调用各种数据库中自带的命令语句实现,例如mysql数据库中的mysqldump数据导出命令。Oracle数据库中的exp数据导出命令等,调用数据库自带的命令可以在短时间内消耗非常小的资源实现相应的数据处理。上述这种脚本语言与数据库自身命令相结合的ETL任务实现方式,实现了消耗非常小的资源来完成大数据量的处理加工,使得ETL任务执行起来更加容易实现,并能支持复杂的数据逻辑处理,且降低了 ETL数据处理的成本,提高了 ETL数据处理的性能。
[0055]本步骤中,假设服务器将ETL任务I的脚本语言文件以及ETL任务I的任务标识I发送给客户端1,将ETL任务2的脚本语言文件以及ETL任务2的任务标识2发送给客户端2,将ETL任务3的脚本语言文件以及ETL任务3的任务标识3发送给客户端3,使得客户端I保存ETL任务I的脚本语言文件及其任务标识I,客户端2保存ETL任务2的脚本语言文件及其标识2,客户端3保存ETL任务3的脚本语言文件及其标识3。
[0056]步骤302:服务器确定有效ETL任务。本步骤中,未被禁用的ETL任务均为有效ETL任务,且任务1、任务2、任务3未被禁用,因此服务器确定出的有效ETL任务包括任务1、任务2、任务3。
[0057]当不需要抽取这十个仓库中的订单数据时,服务器将任务1、任务2、任务3设置为禁用状态,则任务1、任务2、任务3不再是有效任务。
[0058]步骤303:服务器判断有效ETL任务是否满足执行条件。
[0059]本实施例中,任务I的执行条件仅涉及下次执行时间,且任务I的下次执行时间为2014年6月2日21点;任务2与任务3的执行条件均仅涉及执行触发条件,任务2的执行触发条件为任务I执行成功,任务3的执行触发条件为任务2执行成功。
[0060]假设当前时间是2014年6月2日21点10分,服务器判断任务I的下次执行时间小于当前时间,则任务I满足执行条件;任务2的执行触发条件为未成立(当日任务I尚未执行成功),则任务2不满足执行条件,任务3的执行触发条件为未成立(当日任务2尚未执行成功),则任务3不满足执行条件。
[0061]步骤304:服务器将满足执行条件的任务I的任务标识I携带于执行请求报文中发送给客户端I。
[0062]步骤305:客户端I接收到携带任务标识I的执行请求报文后,根据任务标识I确定任务I的ETL任务脚本语言文件,并执行确定出的ETL任务脚本语言文件。
[0063]本步骤中,客服端I预先保存有任务I的脚本语言文件以及对应的任务标识1,当客户端I接收到服务器发送的执行请求报文后,根据执行请求报文携带的任务标识I确定匹配的ETL任务脚本语言文件,即任务I的脚本语言文件,并执行任务I的脚本语言文件,实现将十个仓库的订单数据抽取为数据文件,并保存在Windows系统中。
[0064]步骤306:客户端I成功执行任务1,将执行成功信息携带于执行应答报文中发送给服务器,且该执行应答报文携带任务标识I。
[0065]本步骤中,客户端I成功执行任务I后,将任务标识I与执行成功信息的执行结果携带于执行应答报文中发送给服务器,通知服务器任务I已成功执行。步骤307:服务器接收客户端I发送的执行应答报文,根据该执行应答报文携带的任务标识I与执行成功信息,确定任务I已执行成功,将任务2的执行触发条件由未成立配置为已成立,并将任务I的下次执行时间更新为2014年6月3日21点。
[0066]步骤308:服务器判断任务2已满足执行条件,则发送携带任务标识2的执行请求报文给客户端2。
[0067]步骤309:客户端2接收到携带任务标识2的执行请求报文后,根据任务标识2确定任务2的ETL任务脚本语言文件,并执行确定出的ETL任务脚本语言文件。
[0068]本步骤中,客服端2预先保存有任务2的脚本语言文件以及对应的任务标识2,当客户端2接收到服务器发送的执行请求报文后,根据执行请求报文携带的任务标识2确定匹配的ETL任务脚本语言文件,即任务2的脚本语言文件,并执行任务2的脚本语言文件,实现将保存在Windows系统中的订单数据文件复制到Linnux系统中。
[0069]步骤310:客户端2成功执行任务2后,将执行成功信息携带于执行应答报文中发送给服务器,且该执行应答报文携带任务标识2。
[0070]步骤311:服务器接收客户端2发送的执行应答报文,根据该执行应答报文携带的执行成功信息与任务标识2,确定任务2已执行成功,将任务3的执行触发条件由未成立配置为已成立,同时将任务2的执行触发条件由已成立配置为未成立。
[0071]由于串行任务任务1、任务2、任务3为每日执行一次的任务,因此,当日任务2执行成功后,服务器将任务3的执行触发条件由未成立配置为已成立,并将任务2的执行触发条件由已成立配置为未成立,保证第二日任务2能正常执行。步骤312:服务器判断任务3已满足执行条件,则发送携带任务标识3的执行请求报文给客户端3。
[0072]步骤313:客户端3接收到携带任务标识3的执行请求报文后,根据任务标识3确定任务3的ETL任务脚本语言文件,并执行确定出的ETL任务脚本语言文件。
[0073]本步骤中,客服端3预先保存有任务3的脚本语言文件以及对应的任务标识3,当客户端3接收到服务器发送的执行请求报文后,根据执行请求报文携带的任务标识3确定匹配的ETL任务脚本语言文件,即任务3的脚本语言文件,并执行任务3的脚本语言文件,实现将Linnux系统中的订单数据文件推送到HADOOP平台的HADOOP表中,并对HADOOP表中的数据文件进行汇总,将汇总后的订单数据推送到第三方数据库中。
[0074]步骤314:客户端3成功执行任务3后,将执行成功信息携带于执行应答报文中发送给服务器,且该执行应答报文携带任务标识3。
[0075]步骤315:服务器接收客户端3发送的执行应答报文,根据该执行应答报文携带的执行成功信息与任务标识3,确定任务3已执行成功,将任务3的执行触发条件由已成立配置为未成立。
[0076]本实施例通过脚本语言实现数据的抽取、转换、加载等步骤,摆脱了 ETL工具的限制,能够通过脚本语言实现各种复杂的数据处理逻辑,并且由服务器进行任务调度,客户端执行任务,有效实现了 ETL任务的串行操作,形成一套完整的ETL数据处理过程,有效提高了数据抽取、转换、加载的效率,并易于实现。
[0077]以上对本发明实施例提出的数据抽取、转换、加载ETL的方法进行了说明。下面结合附图对本发明实施例提供的服务器设备及客户端设备进行说明。
[0078]图4为本发明实施例提供的一种服务器设备结构图,该服务器设备用于数据抽取、转换、加载ETL,如图4所示,该服务器设备包括:
[0079]处理模块401,用于确定有效数据抽取、转换、加载ETL任务,并判断所述有效ETL任务是否满足执行条件
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1