一种数据提取方法与流程

文档序号:14990799发布日期:2018-07-20 22:10阅读:4831来源:国知局

本发明涉及计算机技术领域,具体而言,涉及一种数据提取方法。



背景技术:

随着互联网的快速发展,以及云计算技术的推广,海量数据不断产生,海量数据的处理越来越重要。对于传统的基于关系型数据库(rds)架构的数据分析系统,当表单数据超过千万,对于rds的压力就会呈指数增加,最主要的表现体现在iops的增加和cpu使用率的提升,严重的情况会影响正常业务的进行。

bi系统在提取数据时,当从单一数据库中提取时,由于用户数量不大,每天的业务数据不大,可以直接在生产库中查询;而当业务数据量增加时,数据表之间的连表查询需求越来越大,如果直接生产库中查询,对生产库的压力非常大,很容易就会影响生产库正常的读写任务。



技术实现要素:

为解决上述问题,本发明的目的在于提供一种数据提取方法,高效提取数据中的价值,便于bi系统提取数据,提高bi系统的效率。

本发明提供了一种数据提取方法,该方法包括:

步骤1,客户端采集数据,将数据根据需要保存在日志服务器、业务数据库、缓存服务器中;

步骤2,对采集到的数据预处理,将数据按照数据量以及数据及时性的要求,定时从日志服务器、业务数据库中同步到分布式文件存储器中;

步骤3,计算机集群按照需求分配cpu核心数以及内存数,从分布式文件存储器中提取数据并进行数据计算处理,将计算处理后的结果数据写回分布式文件存储器中;

步骤4,将计算处理后的结果数据进行数据结果化处理,并同步到业务数据库中;

步骤5,业务服务器根据需求选择从缓存服务器或业务数据库中提取数据。

作为本发明进一步的改进,步骤2中,将数据从日志服务器、业务数据库同步到分布式文件存储器中时,需要根据业务场景需要按分钟、按小时、按天、按月同步;

当数据是从日志服务器中同步到分布式文件存储器中时:将日志文件细分到分钟,根据细分后的日志文件预计的大小,按照分布式文件存储器的文件格式分别投递到分布式文件存储器中,同时在分布式文件存储器中设置好字段类型,并将不符合的数据清洗掉;

当数据是从业务数据库中同步到分布式文件存储器中时:将业务数据库中该数据对应的表加上创建时间索引及id索引,并按照分钟、小时、天火月将该数据同步分布式文件存储器中。

作为本发明进一步的改进,步骤2还包括分脏数据处理:将采集到的数据中不符合数据类型的数据行直接删除,或,在数据的同步过程中添加筛选条件,将列为空的数据直接删除。

作为本发明进一步的改进,步骤3中的数据计算处理包括:

数据冗余处理:在分布式文件存储器中提取数据时,将数据中重要列提取出来保存到单独表中;将业务数据库中的日志数据同时保存到分布式文件存储器中进行数据备份;将单行日志数据转换成多列数据;

数据多级处理:将不同粒度的数据分层次逐级处理;

数据分类处理:将不同类型或者behavior_id的数据写入一张结果表中。

作为本发明进一步的改进,数据冗余处理时,还包括将分布式文件存储器中的日志数据同步回业务数据库中。

作为本发明进一步的改进,数据分类处理时,对于不同数据类型的数据,当数据类型较少时,将类型穷举,分列统计后存放在结果表中;当数据类型较多时,直接将这些类型进行分组,统计后存放在结果表中。

作为本发明进一步的改进,步骤4中数据结果化处理包括:将结果数据同步到业务数据库中时,对数据的维度值均加上索引;根据最后需求分层级保存结果数据,将每一级的表都同步到业务数据库中;删除业务数据库中使用率较低的历史数据。

本发明的有益效果为:

减少了同步查询数据的压力,提高了表查询的效率;bi系统可以快速高效提取需要的数据,并进行报表展示,提高bi系统的效率。

附图说明

图1为本发明实施例所述的一种数据提取方法的流程示意图;

图2为本发明数据提取时的系统示意图。

具体实施方式

下面通过具体的实施例并结合附图对本发明做进一步的详细描述。

如图1和2所示,本发明实施例所述的一种数据提取方法,该方法包括:

步骤1,客户端采集数据,将数据根据需要保存在日志服务器、业务数据库、缓存服务器中。

步骤2,对采集到的数据预处理,将数据按照数据量以及数据及时性的要求,定时从日志服务器、业务数据库中同步到分布式文件存储器中。

将数据从日志服务器、业务数据库同步到分布式文件存储器中时,需要根据业务场景需要按分钟、按小时、按天、按月同步。

当数据是从日志服务器中同步到分布式文件存储器中时:将日志文件细分到分钟,根据细分后的日志文件预计的大小,按照分布式文件存储器的文件格式分别投递到分布式文件存储器中,同时在分布式文件存储器中设置好字段类型,并将不符合的数据清洗掉。例如,某个日志文件保存了从2017-12-0100:00:00到2017-12-0100:30:00的日志数据,则将文件名命名为xxxx201712010030,在投递时将该文件按照分布式文件存储器要求的文件格式投递到分布式文件存储器中。

当数据是从业务数据库中同步到分布式文件存储器中时:将业务数据库中该数据对应的表加上创建时间索引及id索引,并按照分钟、小时、天火月将该数据同步分布式文件存储器中。在表加上创建时间索引,是为了保证数据在同步时能够用到该索引,减少单次同步查询数据库时的压力,另外增加id索引,是为了分布式同步时提高同步效率。一般情况下,单日千万级的表格可以考虑5分钟同步一次,减少单次同步时的慢查询,百万级的表格可以考虑分小时同步,十万级的表格可以考虑按天同步。

进一步的,还包括分脏数据处理:将采集到的数据中不符合数据类型的数据行直接删除,或,在数据的同步过程中添加筛选条件,将列为空的数据直接删除。

步骤3,计算机集群按照需求分配cpu核心数以及内存数,从分布式文件存储器中提取数据并进行数据计算处理,将计算处理后的结果数据写回分布式文件存储器中。

其中,数据计算处理包括:

数据冗余处理:

1、在分布式文件存储器中提取数据时,将数据中重要列提取出来保存到单独表中,这种方式是为了方便处理。例如,用户登录记录表,将用户部分信息提取出来,保存到单日活跃用户表,去除了多次登录用户的记录,虽然这部分记录在用户登录记录表中依旧有保存,但是单独保存表以后方便后续查询,提高效率。

2、将业务数据库中的日志数据同时保存到分布式文件存储器中进行数据备份。这是因为,业务数据库对分布式的支持并不理想,因此在业务数据库中一般对于日志数据仅能保存近几天的数据,因此,需要在分布式文件存储器中对业务数据库中的日志数据进行永久保存,如果需要,可以将分布式文件存储器的数据同步回业务数据库。

3、将单行日志数据转换成多列数据。这种处理原因在于,有时候单行日志数据可能会存在某一列保存了多条记录的情况,比如用户登录设备表,一个用户会有多条登录设备,业务数据库要求数据尽量不要冗余,因此会将多个设备保存到一个字段中,此时如果是要数据分析,数据量太大,因此,单行日志数据通过split()以后将进行lateralviewexplode,这样即方便计算,也提高计算效率。

数据多级处理:将不同粒度的数据分层次逐级处理。例如,当我们想知道当天的活跃用户有多少时,可以先统计一个分省分运营商的活跃用户数,再统计一个分省的活跃用户,再统计一个分运营商的活跃用户,最后再统计总的活跃用户数。这种分粒度多级统计出来的结果需要跟业务逻辑配合,例如,一个用户安装了多款游戏,如果说按照分游戏先统计出一个活跃用户,然后再按照分游戏的活跃用户求和得到总活跃用户,那得到的真实的活跃用户就会偏多,但是有时候我们就需要这样一个活跃用户,这时可以将同一个用户玩不同的游戏算成多个用户,这样处理的好处在于:1)、在合理范围内增加活跃用户总数;2)、能够得到一个真实的用户arpu值。

数据分类处理:将不同类型或者behavior_id(即用户行为id)的数据写入一张结果表中。这种处理是为了减少开发的工作量,不需要判断具体是什么类型的日志数据就可以直接插入数据库中,提高了数据插入的性能。在处理时,对于不同数据类型的数据,当数据类型较少时,将类型穷举,分列统计后存放在结果表中;当数据类型较多时,直接将这些类型进行groupby分组,统计后存放在结果表中,当bi系统的报表需要用到时,提取需要的数据类型,进行报表展示即可。

步骤4,将计算处理后的结果数据进行数据结果化处理,并同步到业务数据库中。

数据结果化处理包括:

将结果数据同步到业务数据库中时,对数据的维度值均加上索引。由于分布式文件存储器在实时查询效率低下,因此将数据同步到业务数据库,在业务数据库中展示数据,效率会高很多,同时将维度值都加上索引,能够提高数据搜索的效率。

根据最后需求分层级保存结果数据,将每一级的表都同步到业务数据库中。这样能够帮助bi系统快速地展示,当涉及到下钻时,根据下钻的要求去上一级表中将下钻结果展示出来,提高了提取效率。

删除业务数据库中使用率较低的历史数据。因为对于bi系统而言,有时候不需要过渡展示历史数据,因为已经将数据保存在分布式文件存储器中,如果有必要可以随时将这部分数据同步到业务数据库中,对于一些粒度较细的结果表,bi系统中只展示两个月的数据,在导入新的一天的数据时,导完以后加入delete操作及时删除历史数据,可以保证重要结果表查询效率。

步骤5,业务服务器根据需求选择从缓存服务器或业务数据库中提取数据。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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