关系型数据库至Hive的ETL脚本创建方法与流程

文档序号:13736188阅读:1686来源:国知局

本发明属于数据库领域,尤其涉及一种关系型数据库至hive的etl脚本创建方法。



背景技术:

伴随着信息化时代的到来,数据规模急速膨胀,分布式大数据存储和处理技术也应运而生。作为建设开源企业级数据仓库中坚力量的hive(基于hadoop的数据库工件),因其强大的存储和计算能力,是数据工作人员尤为倚重的数据源之一。落地到hive的数据,一般来自于关系型数据库、nosql数据库(泛指非关系型数据库)、消息队列等,其中关系型数据库由于其事务支持特性和与应用系统的成熟衔接,是应用业务数据落地的不二之选。因此,从关系型数据库到hive的etl(extract,transform,load,抽取,转换,加载)是目前数据迁移最主要方式之一。而关系型数据库的数据的特征分类有多种,例如,关系型数据库的数据可以分为日志型数据或业务型数据,也可以分为静态数据或动态数据。针对不同特征分类的数据,有不同策略的etl操作。在进行批量关系型数据库到hive的etl操作时,为了对某一关系型数据库的数据进行操作,同时避免影响其他数据库访问和应用,etl工程师往往会花费精力,针对不同特征分类的数据手工配置相应的etl脚本,尤其在数据库中数据量(例如数据表的数量)非常大的情况下,需要针对每张数据表创建相应的etl脚本,效率很低、成本很高。



技术实现要素:

本发明要解决的技术问题是:针对现有技术中,进行批量关系型数据库到hive的etl操作时,手动编写相应的etl脚本效率低、时间成本高的缺陷,提供一种关系型数据库至hive的etl脚本创建方法。

本发明通过以下技术方案解决上述技术问题:一种关系型数据库至hive的etl脚本创建方法,所述关系型数据库至hive的etl脚本创建方法包含以下步骤:

s1、识别关系型数据库中的数据表的特征分类;

s2、根据识别出的特征分类为所述关系型数据库数据表创建etl脚本;

s3、将创建的etl脚本注册至调度平台进行etl作业。

较佳地,s1包含:根据所述关系型数据库的动态管理系统表的统计信息,识别所述数据表的特征分类是日志型还是业务型。

较佳地,s1包含:根据所述关系型数据库的动态管理系统表的统计信息,识别所述数据表的特征分类是动态还是静态。

较佳地,所述统计信息包含所述关系型数据库中的数据的变更的次数,所述变更包含、数据删除、数据更新中的至少一项;

s1包含:根据所述变更的次数,识别所述数据表的特征分类是日志型还是业务型。

较佳地,所述统计信息包含所述关系型数据库中的数据表的记录数和大小;

s1包含:根据所述数据表的记录数和大小,识别所述特征分类是动态还是静态。

较佳地,所述关系型数据库数据表的取数的时间字段为随数据更新而更新的时间字段,该字段必须在索引列或者联合索引的第一列;

s1包含:获取所述关系型数据库的时间字段,根据所述时间字段指定数据表取数的时间范围。

较佳地,s3包含:获取调度平台的注册方式,根据所述注册方式将生成的etl脚本提交到调度平台。

较佳地,所述注册方式包含模拟用户登录的方式。

较佳地,所述注册方式包含调用作业调度平台服务的方式。

本发明的积极进步效果在于:通过本发明的关系型数据库至hive的etl脚本方法,可以快速识别关系型数据库的数据表的分类特征,进行批量关系型数据库到hive的etl操作时,可以快速高效地为关系型数据库创建相应的etl脚本,进而提高数据迁移的效率。

附图说明

图1为实施例1的关系型数据库至hive的etl脚本创建方法的流程图。

具体实施方式

下面通过实施例的方式进一步说明本发明,但并不因此将本发明限制在所述的实施例范围之中。

实施例1

本发明的关系型数据库至hive的etl脚本方法,如图1所示,包含以下步骤:

s101、识别关系型数据库中的数据的特征分类。

关系型数据表的数据按照是否更新角度可以分为两类:一类为插入表后不会更新(即不会对表中数据进行删除或更新操作)的日志型数据;另一类为插入表后会更新(即会对表中数据进行删除或更新)的业务性数据。针对这两类数据,etl至hive的方式有所不同。对日志型数据,每天的etl任务为将前一天产生的数据迁移到hive对应的分区;而对业务型数据,每天的任务则是将前一天所有改动的数据(即发生数据新增、数据更新的数据)迁移至hive,并和最近历史数据归并去重(merge)形成最新的分区以保证hive中的数据状态为最接近关系型数据表。

根据上述日志型数据和业务型数据的不同特性,根据关系型数据库的动态管理系统表的统计信息,可以识别关系型数据库中的数据表的分类特征。因此,作为一种较佳的实施例,在s101中,根据所述关系型数据库的动态管理系统表的统计信息,识别所述特征分类是日志型还是业务型。具体地,所述统计信息包含所述关系型数据库中的数据的变更的次数,所述变更包含数据删除、数据更新。每当进行数据删除、数据更新操作,所述变更的次数的数值都会增加1。因为日志型数据不会发生变更,而业务型数据会发生变更,因此,变更的次数为0的数据,为日志型数据,而变更的次数不为0的数据为业务型数据。

s102、根据识别出的特征分类为所述关系型数据库创建etl脚本。具体地,获取数据库名、认证信息、作业调度策略等,并结合识别出的特征分类是日志型还是业务型,整合成参数,针对选取的etl工具,为关系型数据库数据表创建对应的etl脚本。目前开源社区主要有sqoop(用来将hadoop和关系型数据库中的数据相互转移的工具。hadoop:由apache基金会所开发的分布式系统基础架构)和datax(在异构的数据库/文件系统之间高速交换数据的工具)这两种从关系型数据库etl到hive的工具,可以根据这两种工具的特性各自定义相关参数,创建相应的执行脚本。较佳地,可以使用软件手段根据识别出的特征分类,并获取数据库的数据表元数据信息以及其他参数,批量创建etl脚本。

s103、将创建的etl脚本注册至调度平台进行etl作业。

具体实施中,s103中包括:获取调度平台的注册方式,根据所述注册方式将生成的etl脚本提交到调度平台。其中,调度平台的注册方式包含模拟用户登录的方式或调用作业调度平台服务的方式。

如果etl作业需要运行在作业调度平台,如zeus(一个完整的hadoop的作业平台)平台上,通过调度平台公开的作业(job)配置api(applicationprogramminginterface,应用程序编程接口)或者模拟用户登录的方式,可以将etl作业注册提交上去,设置好相应的执行时间点和频率;如不需要提交到作业调度平台,则可以在一台etl工具客户端的节点上配置相应的定期作业。

将etl脚本在zeus平台上注册时,可以采用两种方案注册作业:一种为模拟用户登录的方式,通过分析zeus平台的网络请求关系,提交适当的参数至对应的url(uniform/universalresourcelocator,统一资源定位符);另一种为调用zeus提交job(作业)的服务(即调用作业调度平台服务的方式)。两种方案均可实现etl作业的注册。

通过本发明的关系型数据库至hive的etl脚本创建方法,可以快速识别关系型数据库的数据的分类特征,进行批量关系型数据库数据表到hive的etl操作时,可以快速高效地为关系型数据库数据表创建相应的etl脚本。进而在作业调度平台上运行所述etl脚本,从而完成数据迁移,因此本发明提高了数据迁移的效率。

实施例2

本实施例的数据库脚本创建方法,如图1所示,包含以下步骤:

s101、识别关系型数据库中的数据的特征分类。

关系型数据表的数据从数据写入频率可以分为静态数据和动态数据。静态数据的特点是数据更新迭代得较慢,比如供应商数据,一旦录入以后,更新得不频繁;而动态数据则会随着业务系统流量的增加而增加。这样造成两类数据对应的hive的etl方式也有所不同。静态数据需要始终在hive中保存着最新的全量数据,而动态数据本身只需要保存最近的热度数据即可。

根据上述动态数据和静态数据的不同特性,根据关系型数据库的动态管理系统表的统计信息,可以识别关系型数据库中的数据的分类特征。所述统计信息中包含关系型数据库中的数据表的记录数和大小,因此,作为一种较佳的实施例,在s101中,根据所述数据表的记录数和大小,识别所述特征分类是动态还是静态。具体地,例如,静态数据中,往往数据表的记录的条数较少,且一般不会发生变化,并且数据表的总体大小(字节数)较小;而动态数据则会随着业务系统流量的增加而增加,因此数据表的记录的条数会发生变化(增加),并且数据表的总体大小(字节数)较大。因此,当某一数据表的总体大小超过预设大小时,将其识别为动态数据;反之,将其识别为静态数据。或者,当某一数据表的记录数少于预设数值时,将其识别为静态数据;反之,将其识别为动态数据。为了获得更优的识别效果,还可以进一步结合数据表的记录数,采取动态识别的策略。例如,对于原识别为静态数据的数据表,或者进行初次识别时,当数据表的记录数较更早的时间点发生变化(增加)时,则识别该数据为动态数据。前述预设大小、预设数值可根据历史统计数据的分析值、或者经验值进行设置,也可以根据数据库具体特征、具体情况合理调整。

s102、根据识别出的特征分类为所述关系型数据库创建etl脚本。具体地,根据识别出的特征分类是动态还是静态,有针对性地为关系型数据库创建etl脚本。

实施例3

本发明的关系型数据库至hive的etl脚本创建方法如图1所示,其与实施例1的区别在于加入增量取数的时间字段识别。

在识别关系型数据库中的数据表特征分类后,还需要指定每次etl操作的取数的时间范围,因此,识别数据表的增量取数的时间字段是必须步骤之一。进一步地,在s101中,获取到关系型数据库的时间字段,并判断该时间字段是否跟随数据的变更而更新,如果是,判断所述时间字段是否能使用索引(在索引列或联合索引的第一列),若满足上述两种原则将上述时间字段指定为增量取数的时间字段,生成取数的时间范围。

本实施例的关系型数据库至hive的etl脚本创建方法的其余步骤与前述几个实施例类似,不再赘述。

虽然以上描述了本发明的具体实施方式,但是本领域的技术人员应当理解,这些仅是举例说明,本发明的保护范围是由所附权利要求书限定的。本领域的技术人员在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,但这些变更和修改均落入本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1