一种基于kettle的大数据平台数据抽取和统计方法与流程

文档序号:12271531阅读:7900来源:国知局

本发明涉及计算机软件应用技术领域,具体涉及一种基于kettle的大数据平台数据抽取和统计方法。



背景技术:

随着云计算技术的不断发展,云计算技术不断落地成为支撑各行业信息技术发展的重要支柱。基于hadoop和hbase的分布式集群,如今已成为国内外云计算热门研究对象。Hadoop的HDFS分布式存储为云平台提供了分布式文件存储系统,而hbase因为具有良好的读写性能,并且能够支持大数据量的表,因而适用于简单业务、数据量巨大的在线数据库及数据仓库。

由于hbase本身不适合做业务数据库,业务数据库往往由mysql、oracle等成熟的关系型数据库担任,hbase则负责汇集各个业务系统的数据。这样,依托于hbase强大的分布式列示存储能力,各个业务系统的数据可以统一汇集到hbase数据库中,为大规模统计分析和统一查询奠定了基础。在这个过程中,数据的汇集工作由kettle来完成。

Kettle是一款开源的ETL工具,可以在hbase与传统的关系型数据库数据库(mysql、oracle等)间进行数据的传递,并对数据进行转换。由于hbase中的数据量大、表的数量多,所以想要统计hbase中的数据总量、每张表的数据量、每天的数据增量是非常困难的,需要运行mapreduce程序来完成,由于数据量巨大,表数量多,这个过程消耗大量的计算资源和网络资源。

随着互联网时代的到来,数据量越来越大,使用传统的数据库已经不能够支撑庞大的统计分析工作。大数据处理技术应运而生,但是大数据技术也有其局限性,不能很好的支持在线事务。传统关系型数据库支撑在线系统与大数据技术处理线下统计分析将会长期并存。

在某些场景下,数据量的情况是一项重要指标。在时间维度上有每天、每周、每月、每年的数据增量;在表维度上有每张表的数据增量,整体需求体现为数据总量、每天的数据增量、每月的数据增量、每张表每天的数据增量、每张表每月的数据增量……

由于大数据技术的局限性,很难支持条件查询,不能获得每天数据增量的情况,现有的对数据量的统计只能通过mapreduce程序来完成,每天定时对所有数据扫描一遍,得到以上的统计信息,消耗大量的计算和网络资源。对于几百亿的数据量,每天做数据量统计工作就要消耗几个小时的时间。

当前通过mapreduce任务,每天扫描所有表数据来统计数据量情况,在几百亿数据量的情况下,每天要花费4-5个小时来统计数据情况,这期间大数据集群计算、网络资源消耗严重。



技术实现要素:

本发明要解决的技术问题是:本发明针对以上问题,提供一种基于kettle的大数据平台数据抽取和统计方法,在使用kettle进行数据抽取的过程中,将每次抽取任务数据的增量记录下来,就可以避免后期为统计数据量及增量进行的大量运算,并且能够提供历史的数据汇集情况。

本发明所采用的技术方案为:

一种基于kettle的大数据平台数据抽取和统计方法,所述方法通过对kettle的源码改造,以获取每次抽取数据任务的情况,并记录到一张hbase表中,该hbase表称为历史情况表,表中记录所有数据表的数据量情况;

通过sqoop任务每天对关系型数据库进行定时增量抽取,一次抽取的数据量就是一天的数据增量,将每张数据表每天的数据增量记录下来,写入hbase表中,以实现对数据量情况按表、按时间的组合查询。

传统关系型数据库支撑在线系统与大数据技术处理线下统计分析将会长期并存。在这个两个系统中,kettle担任桥梁的角色,负责数据的传递。通过对kettle的源码改造,可以实现获取每次抽取数据任务的情况,并记录到一张历史情况记录表中。

Sqoop是一款开源的工具,主要用于在HADOOP(Hive)与传统的数据库(mysql、postgresql...)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。

所述方法将每张数据表每天的数据增量记录到hbase的一张数据历史情况表之后,通过对这张历史情况表进行rowkey(行主键)的设计:

序号 rowkey rowkey举例 qualifier

1 {表名字} person_info 数据量

2 {表名字}间隔符{时间} person_info@20150604 数据量

3 {时间}间隔符{表名字} 20150604@person_info 数据量

其中,rowkey中的表名字均为数据表的表名字,而不是历史情况表的表名字;

1中rowkey的qualifier中,数据量表示rowkey中所记录数据表的数据总量,这样,对某张数据表的数据量可以实现快速查询;

2中rowkey由数据表表名字和时间组成,间隔符将表名字和时间区别开,qualifier中的数据量表示rowkey中记录的数据表在时间内的数据增量;通过对某张数据表做scan操作,即可得到这张表在某段时间内的数据增量情况;scan操作中startKey={表名字}间隔符{开始时间},stopkey={表名字}间隔符{结束时间};

3中rowkey与2中rowkey的区别在于互换了表名字和时间的位置,这样做的目的是为了满足获取一段时间内所有表数据增量的需求;scan操作中startKey={开始时间}间隔符,stopkey={结束时间}间隔符z。

通过对历史情况记录表的设计,能满足对数据量情况按表、按时间的组合查询。

在获得sqoop任务信息后,将本次任务的数据量记录在历史情况表中,历史情况表中的三种rowkey都要进行写入或者更新。

本发明的有益效果为:

本发明在数据抽取的过程中,将增量情况记录下来,不需要花费时间,也几乎不消耗任何计算、网络资源。

具体实施方式

结合具体实施方式对本发明进一步说明:

实施例1:

一种基于kettle的大数据平台数据抽取和统计方法,所述方法通过对kettle的源码改造,以获取每次抽取数据任务的情况,并记录到一张hbase表中,该hbase表称为历史情况表,表中记录所有数据表的数据量情况;

通过sqoop任务每天对关系型数据库进行定时增量抽取,一次抽取的数据量就是一天的数据增量,将每张数据表每天的数据增量记录下来,写入hbase表中,以实现对数据量情况按表、按时间的组合查询。

传统关系型数据库支撑在线系统与大数据技术处理线下统计分析将会长期并存。在这个两个系统中,通过kettle担任桥梁的角色,负责数据的传递。通过对kettle的源码改造,可以实现获取每次抽取数据任务的情况,并记录到一张历史情况记录表中。

实施例2

在实施例1的基础上,本实施例所述方法将每张数据表每天的数据增量记录到hbase的一张数据历史情况表之后,通过对这张历史情况表进行rowkey(行主键)的设计:

序号 rowkey rowkey举例 qualifier

1 {表名字} person_info 数据量

2 {表名字}间隔符{时间} person_info@20150604 数据量

3 {时间}间隔符{表名字} 20150604@person_info 数据量

其中,rowkey中的表名字均为数据表的表名字,而不是历史情况表的表名字;

1中rowkey的qualifier中,数据量表示rowkey中所记录数据表的数据总量,这样,对某张数据表的数据量可以实现快速查询;

2中rowkey由数据表表名字和时间组成,间隔符将表名字和时间区别开,qualifier中的数据量表示rowkey中记录的数据表在时间内的数据增量;通过对某张数据表做scan操作,即可得到这张表在某段时间内的数据增量情况;scan操作中startKey={表名字}间隔符{开始时间},stopkey={表名字}间隔符{结束时间};

3中rowkey与2中rowkey的区别在于互换了表名字和时间的位置,这样做的目的是为了满足获取一段时间内所有表数据增量的需求;scan操作中startKey={开始时间}间隔符,stopkey={结束时间}间隔符z。

通过对历史情况记录表的设计,能满足对数据量情况按表、按时间的组合查询。

实施例3

在实施例2的基础上,本实施例在获得sqoop任务信息后,将本次任务的数据量记录在历史情况表中,历史情况表中的三种rowkey都要进行写入或者更新。

实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。

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