本发明属于计算机领域,尤其涉及一种数据导入方法及装置。
背景技术:
在社会快速发展的今天,各行各业每天都会产生大量的数据,数据来源囊括了我们周围可以捕获的任何类型数据,网站、社交媒体、交易型商业数据以及其它商业环境中创建的数据。在这种环境下,apache框架hadoop应运而生,它是一个越来越通用的分布式计算环境,主要用来处理大数据。随着云提供商利用这个框架,更多的用户将数据集在hadoop和传统数据库之间转移,能够帮助数据传输的工具变得更加重要。apachesqoop就是这样一款工具,可以在hadoop和关系型数据库之间转移大量数据。在实际应用中,有时需要将数据从关系型数据库导入到kafka,然而sqoop作为一个数据转移工具,没有提供这方面的支持。考虑到实际应用的需要,我们根据sqoop的工作原理,设计将数据库的数据作为消息发送到kafka的mapreduce程序,实现了数据从关系型数据库到kafka的高效便捷的导入。
因此,迫切需要提供一种数据导入方案,来解决将数据从关系型数据库导入到kafka的问题。
技术实现要素:
本发明提供一种数据导入方法及装置,以解决上述问题。
本发明提供一种数据导入方法。上述方法包括以下步骤:
扩展数据转移工具,使所述数据转移工具具备导入数据至分布式消息系统的功能;
分析从关系型数据库导入数据至所述分布式消息系统所需的参数,并将所述参数通知所述数据转移工具;
通过所述数据转移工具将所述关系型数据库中与所述参数对应的数据导入至所述分布式消息系统。
本发明还提供一种数据导入装置,包括:扩展模块、分析模块、数据导入模块,其中,所述扩展模块与所述分析模块连接,所述分析模块与所述数据导入模块连接,
扩展模块,用于扩展数据转移工具,使所述数据转移工具具备导入数据至分布式消息系统的功能;
分析模块,用于分析从关系型数据库导入数据至所述分布式消息系统所需的参数,并将所述参数通知所述数据转移工具;
数据导入模块,用于通过所述数据转移工具将所述关系型数据库中与所述参数对应的数据导入至所述分布式消息系统。
通过以下方案:扩展数据转移工具,使所述数据转移工具具备导入数据至分布式消息系统的功能,分析从关系型数据库导入数据至所述分布式消息系统所需的参数,并将所述参数通知所述数据转移工具,通过所述数据转移工具将所述关系型数据库中的对应数据导入至所述分布式消息系统,实现了将数据从关系型数据库高效导入到分布式消息系统的功能。
通过以下方案:数据转移工具可以是apachesqoop,一方面避免了重新开发导入所需所有模块的重复劳动,另一反面进一步完善了sqoop作为一个数据转移工具的功能。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1所示为本发明实施例1的数据导入方法处理流程图;
图2所示为本发明实施例2的数据导入原理示意图;
图3所示为本发明实施例3的数据导入装置结构图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
图1所示为本发明实施例1的数据导入方法处理流程图,包括以下步骤:
步骤102:扩展数据转移工具,使所述数据转移工具具备导入数据至分布式消息系统的功能。
步骤104:分析从关系型数据库导入数据至所述分布式消息系统所需的参数,并将所述参数通知所述数据转移工具。
其中,所述参数可以包括:表名、表字段、业务数据、输入、输出、映射数、任务数等等。
步骤106:通过所述数据转移工具将所述关系型数据库中与所述参数对应的数据导入至所述分布式消息系统。
进一步地,通过所述数据转移工具将所述关系型数据库中的对应数据导入至所述分布式消息系统包括:
定制切分参数值,根据所述切分参数值对所述关系型数据库进行切分,得到不同的切分区域;
将所述不同的切分区域分配至不同的映射中;
通过每个映射从所述数据库中相应的区域中获取数据,并将获取的数据导入所述分布式消息系统中。
进一步地,还包括:设计参数校验条件;
在所述参数符合所述参数校验条件时,将所述参数通知所述数据转移工具。
也就是说可以根据分布式消息系统的要求来设计参数校验模型,符合该参数校验模型的参数即满足要求,可以按照这些参数对数据转移工具进行配置,使数据转移工具获取对应的数据并导入到分布式数据库中。
通过所述数据转移工具可调用所述分布式消息系统的接口函数,将从所述关系数据库中读取的数据以消息形式发送至所述分布式消息系统。
其中,所述分布式消息系统包括kafka数据库,所述数据转移工具包括apachesqoop。
通过扩展sqoop工具,并设计将数据库的数据作为消息发送到kafka的mapreduce程序,实现了数据从关系型数据库到kafka数据库的高效便捷导入。
图2所示为本发明实施例2的数据导入原理示意图。
如图2所示,首先,扩展sqoop的import工具,增加导入数据到kafka的导入服务,即使该工具具备导入数据到kafka的能力。
分析从关系型根据数据库导入数据至kafka所需要的参数,进行参数校验,并做相关配置。可以设计参数校验条件,根据经过校验的参数对数据转移工具进行配置。qoop客户端利用数据库的驱动程序读取数据库中表结构,并生成运行类
编写kafkamapreducejob,调用kafka中的接口函数,将从数据库读取的数据发送到kafka。
在数据读取时,首先要对数据进行切分;切分好范围后,读取相应范围内的数据,然后创建map映射,一行一行从关系型数据库中读取数据。最后将数据以消息的形式发送给kafka,完成数据导入过程。
考虑到实际应用的需要,我们根据sqoop的工作原理,设计将数据库的数据作为消息发送到kafka的mapreduce程序(简称mr),实现了数据从关系型数据库到kafka的高效便捷的导入。
图3所示为本发明实施例3的数据导入装置结构图。
如图3所示,根据本发明的实施例的一种数据导入装置,包括:扩展模块302、分析模块304、数据导入模块306,其中,所述扩展模块302与所述分析模块304连接,所述分析模块304与所述数据导入模块306连接,
扩展模块302,用于扩展数据转移工具,使所述数据转移工具具备导入数据至分布式消息系统的功能;
分析模块304,用于分析从关系型数据库导入数据至所述分布式消息系统所需的参数,并将所述参数通知所述数据转移工具;
数据导入模块306,用于通过所述数据转移工具将所述关系型数据库中与所述参数对应的数据导入至所述分布式消息系统。
其中,所述数据导入模块306包括:
切分单元3062,用于定制切分参数值,根据所述切分参数值对所述关系型数据库进行切分,得到不同的切分区域;
分配单元3064,用于将所述不同的切分区域分配至不同的映射中;
映射单元3066,用于通过每个映射从所述数据库中相应的区域中获取数据,并将获取的数据写入所述分布式消息系统中。
所述数据导入模块306调用所述分布式消息系统的接口函数,将从所述关系数据库中读取的数据以消息形式发送至所述分布式消息系统。
进一步地,所述分析模块304包括:
验证单元3042,用于设计参数校验条件,在所述参数符合所述参数校验条件时,将所述参数通知所述数据转移工具。
其中,所述分布式消息系统包括kafka数据库,所述数据转移工具包括apachesqoop。通过扩展sqoop工具,并设计将数据库的数据作为消息发送到kafka的mapreduce程序,实现了数据从关系型数据库到kafka数据库的高效便捷导入。
通过以下方案:扩展数据转移工具,使所述数据转移工具具备导入数据至分布式消息系统的功能,分析从关系型数据库导入数据至所述分布式消息系统所需的参数,并将所述参数通知所述数据转移工具,通过所述数据转移工具将所述关系型数据库中的对应数据导入至所述分布式消息系统,实现了将数据从关系型数据库高效导入到分布式消息系统的功能。
通过以下方案:数据转移工具可以是apachesqoop,一方面避免了重新开发导入所需所有模块的重复劳动,另一反面进一步完善了sqoop作为一个数据转移工具的功能。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。