一种将数据同时导入多个Hadoop组件的方法与流程

文档序号:12802746阅读:773来源:国知局

本发明属于大量数据的快速转移处理技术领域,具体涉及一种将数据同时导入多个hadoop组件的方法。



背景技术:

在社会快速发展的今天,各行各业每天都会产生大量的数据,数据来源囊括了我们周围可以捕获的任何类型数据,网站、社交媒体、交易型商业数据以及其它商业环境中创建的数据。随着云提供商利用这个框架,更多的用户将数据集在hadoop和传统数据库之间转移,能够帮助数据传输的工具变得更加重要。在这种环境下,apache框架hadoop应运而生,它是一个越来越通用的分布式计算环境,主要用来处理大数据。apachesqoop是一种数据转移工具,主要用于在hadoop与传统数据库间进行数据的传递,可以将一个关系型数据库中的数据导进到hdfs、hive、hbase中,也可将hdfs的数据导进到关系型数据库中。

kafka是一种高吞吐量的分布式发布订阅消息系统。有时需要将数据从关系型数据库导入到kafka,然而sqoop作为一个数据转移工具,没有提供这方面的支持,同一批数据可能会被多项工作使用,而原本的sqoop每次只支持一项任务,若想导出到多个hadoop组件,需要单独再写命令,更重要的是要多次读取同一批数据。此为现有技术的不足之处。



技术实现要素:

本发明的目的在于,针对上述现有技术存在的缺陷,提供设计一种将数据同时导入多个hadoop组件的方法,以解决上述技术问题。

为了达到上述目的,本发明提供的技术方案是:

一种将数据同时导入多个hadoop组件的方法,其特征在于,包括以下步骤:

步骤1:扩展sqoop的import工具,增加到kafka的导入服务;

步骤2:根据数据库导入各个组件的配置参数,编写参数校验程序;

步骤3:扩展sqoop的import工具,增加同时导出到hdfs、hive、hbase、kafka的服务。

进一步的,步骤1的实现过程包括:修改sqoop的basesqooptool类代码和importtool类代码,设计向kafka导入数据的mapreduce任务,定义向kakfa导入数据时需要的参数。

进一步的,步骤2的实现过程包括:定义向各个组件导入数据时需要的参数,并增加检测输入参数、记录输入参数、对参数进行校验的程序。

进一步的,步骤3的实现过程包括:用户同时指定同时导出到多个hadoop组件时,增加一个可选的命令参数,使得用户可以一条指令同时指定导出到多个hadoop组件所需的参数,根据用户参数决定调用哪几个组件的接口,用户执行该条命令时,同时处理导出到各个目标组件所需的参数,然后从数据库中读取数据,并同时发送到多个目标组件。

向各个组件导入数据时需要的参数包括关系型数据库jdbc连接字符串、jdbc驱动程序类、设置包含身份验证密码的文件路径、数据库访问用户、用于提供连接参数的可选属性文件、map函数相关参数、reduce函数相关参数。

进一步的,sqoop在import时,制定split-by参数,sqoop根据不同的split-by参数值来进行切分,然后将切分出来的区域分配到不同map中,每个map中再处理数据库中获取的一行一行的值写入hdfs、hive、hbase或kafka中,split-by根据不同的参数类型有不同的切分方法;sqoopimport过程是sqoop客户端利用数据库的驱动程序读取数据库中表结构,并生成运行类,map处理获取的数据写入到hadoop组件;具体步骤包括:a要对数据进行切分;b切分好范围后,写入范围;c读取步骤b写入的范围;d然后创建数据记录的读取器recordreader从数据库中读取数据;创建map;erecordreader逐行从关系型数据库中读取数据交给map,设置好map的key和value;f运行map,写入数据到不同组件。

本发明的有益效果在于,将数据从关系型数据库同时导出到多个hadoop组件的方法,在sqoop原有的连接数据库并读取数据的基础上,增加了同时导出到多个组件的功能,通过一次读取数据库数据,同时启动多个用户指定的导出模块,实现高效便捷的数据导入,一方面避免了为同一批数据写多次导出任务,另一方面避免重复读取相同的数据,提高了效率。

此外,本发明设计原理可靠,结构简单,具有非常广泛的应用前景。

由此可见,本发明与现有技术相比,具有突出的实质性特点和显著地进步,其实施的有益效果也是显而易见的。

附图说明

图1为一种将数据同时导入多个hadoop组件流程图。

具体实施方式

下面结合附图并通过具体实施例对本发明进行详细阐述,以下实施例是对本发明的解释,而本发明并不局限于以下实施方式。

如图1所示,本实施例提供的一种将数据同时导入多个hadoop组件的方法,包括以下步骤:

步骤1:扩展sqoop的import工具,增加到kafka的导入服务;

步骤2:根据数据库导入各个组件的配置参数,编写参数校验程序;

步骤3:扩展sqoop的import工具,增加同时导出hdfs、hive、hbase、kafka的服务。

步骤1的实现过程包括:修改sqoop的basesqooptool类代码和importtool类代码,设计向kafka导入数据的mapreduce任务,定义向kakfa导入数据时的配置参数。

步骤2的实现过程包括:定义向各个组件导入数据时需要的参数,并增加检测输入参数、记录输入参数、对参数进行校验的程序。

步骤3的实现过程包括:用户同时指定同时导出到多个hadoop组件时,增加一个可选的命令参数,使得用户可以一条指令同时指定导出到多个hadoop组件所需的参数,根据用户参数决定调用哪几个组件的接口,用户执行该条命令时,同时处理导出到各个目标组件所需的参数,然后从数据库中读取数据,并同时发送到多个目标组件。

向各个组件导入数据时需要的参数包括关系型数据库jdbc连接字符串、jdbc驱动程序类、设置包含身份验证密码的文件路径、数据库访问用户、用于提供连接参数的可选属性文件、map函数相关参数、reduce函数相关参数。

sqoop在import时,需要制定split-by参数,sqoop根据不同的split-by参数值来进行切分,然后将切分出来的区域分配到不同map中,每个map中再处理数据库中获取的逐行的值写入hdfs、hive、hbase或kafka中,split-by根据不同的参数类型有不同的切分方法。

sqoopimport过程是sqoop客户端利用数据库的驱动程序读取数据库中表结构,并生成运行类,map处理获取的数据写入到hadoop组件;具体步骤包括:a要对数据进行切分;b切分好范围后,写入范围;c读取步骤b写入的范围;d然后创建数据记录的读取器recordreader从数据库中读取数据;创建map;erecordreader逐行从关系型数据库中读取数据交给map,设置好map的key和value;f运行map,写入数据到不同组件。

以上公开的仅为本发明的优选实施方式,但本发明并非局限于此,任何本领域的技术人员能思之的没有创造性的变化,以及在不脱离本发明原理前提下所作的若干改进和润饰,都应落在本发明的保护范围内。

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