本发明属于计算机技术领域,具体涉及一种大数据环境下基于spoon的通用数据库抽取方法。
背景技术:
在信息化的时代,每天都会产生海量的数据,例如电子商务网站的购物信息、火车票购买平台的交易信息、实时聊天工具的聊天信息、工业生产现场采集的相关信息等等,为了方便管理与查阅,这些数据都会存入相应的数据库中。企业、工厂、研究所等机构在处理自身拥有的海量、高增长率和多样化的信息资产时,发现已经无法使用传统的数据库管理软件进行高效的管理,必须采用新的处理模式,从海量的数据中提取出有价值的信息。
由此,大数据技术应运而生。大数据技术的战略意义在于对于包含有用信息的海量数据进行数据挖掘,提取出有价值的信息。大数据需要特殊的技术,例如大规模并行处理(mpp)数据库、数据挖掘、分布式文件系统、分布式数据库、云计算平台、互联网和可扩展的存储系统。
大数据环境下,海量数据存储在不同的数据库中,不同的数据库在数据结构方面往往存在较大的差别,如何快捷高效地从不同的数据库中提取出相关数据,同时实现不同数据库间数据结构的转换对于数据挖掘的实现非常关键。
技术实现要素:
为了解决上述问题,本发明提供了一种大数据环境下基于spoon的通用数据库抽取方法,其特征在于该方法包括如下步骤:
1)通过spoon建模工具制作执行流程图;
2)执行流程图相关参数配置;
3)spoon工具中执行测试;
4)生成可执行的模板文件;
5)搭建spoon、velocity在java中可执行的环境;
6)设计generatevm方法;
7)设计executespoon方法;
8)设计java调用的入口方法。
进一步地,所述步骤2)中所述相关参数包括表输入数据库连接信息、表输出数据库连接信息、表输出数据库表、表输出字段映射配置和大数据量的分页及循环设置。
进一步地,所述步骤3)中所述测试包括transformation验证和影响分析。
进一步地,所述步骤4)中按velocity模板技术的规则在xml中进行动态设置参数。
进一步地,所述参数包括源数据库连接中的${source_name}、${source_server}、以及字段属性${source_colum1}、${source_colum2},目标数据库连接中的${target_name}、${target_server}、以及字段属性${target_colum1}、${target_colum2},源数据库与目标数据库中的字段属性要一一对应。
进一步地,所述步骤5)的具体搭建要求为在windows环境下,安装jre(javaruntimeenvironment),版本要求为1.5及其以上,在类unix环境下,通过输入的命令使得shell脚本处于可执行状态。
进一步地,所述步骤6)的具体包括如下步骤:
a)定义velocity框架需要的properties类;
b)定义velocityengine类,并使用已设置的properties属性进行初始化;
c)通过velocityengine类提供的gettemplate方法获取文件的模板类template;
d)通过template的meger方法,将模板文件中设定的变量通过参数信息集合进行替换;
e)返回替换变量后可在spoon执行的文件(xml)。
进一步地,所述步骤b)中velocityengine每次都会创建一个新的velocity实例,这样就使得每个velocity引擎都会拥有各自的实例,互不干扰。
附图说明
图1是数据库抽取方法的具体流程图。
具体实施方式
为了对本发明的技术特征、目的和效果有更加清楚的理解,现对照附图说明本发明的具体实施方式。
一种大数据环境下基于spoon的通用数据库抽取方法,所述的通用数据库是常见的关系数据库,如oracle,mysql,sqlserver,db2,postgresql,hbase等,方法包括以下步骤:
1)通过spoon建模工具制作执行流程图
ettl(extract-transform-transport-load)用来描述数据从来源端经过抽取(extract)、转换(transform)、运输(ransport)、加载(load)等操作到达目的端的过程。kettle是一款国外开源的ettl工具,纯java编写,可以在window、linux、unix等多种操作系统上运行,数据抽取高效稳定。kettle提供了图形用户界面spoon,允许用户在界面上方便快捷地制作执行流程图,形成transformation脚本文件,transformation脚本文件用来完成针对数据的基础转换。kettle包含的工具pan是一个数据转换引擎,可以进行数据的读取、运算和写入,允许批量运行由spoon设计的ettl转换(例如使用一个时间调度器)。pan是一个后台执行的程序,没有图形界面。
2)执行流程图相关参数配置
transformation中包含四个相互关联的概念,分别为value、row、inputstream、hop和note。其中value属于row的一部分,可以包含任何类型的数据,例如字符串、浮点数、整数、日期、布尔值等。多个同时处理的value作为统一的输入,组成row。一个操作步骤中包含的多个row组成inputstream。hop指的是两个状态间数据流的图形化表示,一个hop总是代表一个状态的输出和另一个状态的输入。note指的是可以添加在转换过程上的描述性文字。
transformation操作需要将输出数据库中的数据抽取出来,经过相应的转换,将转换后的数据放入输入数据库,考虑到关系数据库通过描述性的表格实现信息的存储,为了顺利完成transformation操作,需要在transformation的value中配置如下参数:
a)表输入数据库连接信息;
b)表输出数据库连接信息;
c)表输出数据库表;
d)表输出字段映射配置;
e)大数据量的分页及循环设置。
3)spoon工具中执行测试
在图形界面通过点击相应图标进行transformation验证和影响分析。transformation验证将会对每个状态进行检验,确保以设计好的顺序进行整个转换过程。影响分析将会预测转换操作对于数据库可能带来的影响。
4)生成可执行的模板文件
生成过程包括以下几个步骤:
a)导出执行测试通过的配置文件(xml);
b)将第1步中测试输入的参数,按模板技术(velocity)的规则在xml中进行动态设置(主要包括源库、目标库、字段映射、分页等相关的参数信息),即利用模板技术velocity的变量定义方式,替换测试的参数,如源数据库连接中的${source_name}、${source_server}、以及字段属性${source_colum1}、${source_colum2},目标数据库连接中的${target_name}、${target_server}、以及字段属性${target_colum1}、${target_colum2},源数据库与目标数据库中的字段属性要一一对应;
c)将设置完的xml文件另存为模板技术可执行的vm文件。
5)搭建spoon、velocity在java中可执行的环境
在windows环境下,需要安装jre(javaruntimeenvironment),版本要求为1.5及其以上,在类unix环境下(例如solaris操作系统、linux操作系统、macos操作系统),用户必须使得shell脚本处于可执行状态,具体操作为输入如下命令:
cdkettle;
chmod+x*.sh。
需要说明的是,velocity也依赖于其它一些jar包,在分发版本的build/lib有,如果下载的是二进制分发版本,需要到以下地址下载其它依赖包.具体包括:jakartacommonscollections–必须;jakartaavalonlogkit–可选,但强列建议加上,以便输出日志信息;jakartaoro–可选,仅当用到org.apache.velocity.convert.webmacrotemplate这个模板转换工具时需要。
6)设计generatevm方法
该方法的参数为需要替换vm文件中的动态参数信息集合(javabean)、第3步中生成的可在velocity中执行的模板文件所在的目录和文件名。利用velocity技术替换vm文件参数为spoon执行的xml文件,将生成的xml文件存放在到临时目录中,具体的设计过程如下:
a)定义velocity框架需要的properties类。在properties类中可以进行模板编码、foreach配置、set配置、include配置、parse配置、模板加载器配置、宏配置、资源管理器配置、解析器池配置、可插入introspector配置等多种参数的配置,在此处根据实际需要,放入需要替换的文件路径等信息;
b)定义velocityengine类,并使用已设置的properties属性进行初始化。在org.apache.velocity.app包下,会有velocity和velocityengine这两个类,里面的方法基本相同,两者的区别在于velocity类是一个初始化单例的velocity实例的类,会让多个类共享一个实例,让他们能够访问到同样的数据,而velocityengine每次都会创建一个新的velocity实例,这样就使得每个velocity引擎都会拥有各自的实例,互不干扰。为了实现velocity引擎的隔离运行,此处采用velocityengine类,并利用properties属性进行初始化;
c)通过velocityengine类提供的gettemplate方法获取文件的模板类template;
d)通过template的meger方法,将模板文件中设定的变量通过参数信息集合进行替换;
e)返回替换变量后可在spoon执行的文件(xml)。
7)设计executespoon方法
该方法的参数为第5步骤中生成的临时文件的路径,通过spoon提供的api调用。
8)设计java调用的入口方法
配置步骤6中方法需要的参数信息,完成数据接入操作。
以上所揭露的仅为本发明较佳实施例而已,不能以此来限定本发明之权利范围,依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。