一种基于Spark的流式数据处理方法及装置制造方法及图纸

技术编号:14458974 阅读:71 留言:0更新日期:2017-01-19 16:10
本申请实施例提供一种基于Spark的流式数据处理方法及装置。其中方法包括:对数据源中的流式数据按时间为单位进行切分得到数据单元并分别保存;基于Spark,按照所述数据单元对所述保存的数据进行自动调取并处理。基于该种方法,最小化了数据的处理量,大大减少了处理数据对机器内存的依赖,同时也能很快地继续排序以及数据之间的关联操作,可以很快得到时间为单位的处理结果。

【技术实现步骤摘要】

本专利技术属于流式数据处理领域,具体的涉及一种基于Spark的流式数据处理方法及装置。
技术介绍
目前spark处理数据分为两种,一种为直接读取已有储存文件,进行相关操作处理,该种方法如果数据量过大,则对机器的要求非常高,并且如果提取时间粒度相关信息的话,需要全部文件处理完成才能进行提取,该操作时间长周期长,如果spark配置设置不合理的话极易出现内存溢出。另一种方法为流处理,spark从某个或多个数据源实时读取数据(如kafka,flume等等),然后在设定的时间内实时统计或计算读取的元素。这种处理方法无法处理设定时间内的排序,以及数据之间的关联操作。
技术实现思路
本专利技术的目的在于提供一种基于Spark的流式数据处理方法及装置,以解决现有技术中对机器内存要求高,无法处理设定时间内的排序以及数据之间的关联操作的问题。本专利技术公开了一种基于Spark的流式数据处理方法,所述方法包括:对数据源中的流式数据按时间为单位进行切分得到数据单元并分别保存;基于Spark,按照所述数据单元对所述保存的数据进行自动调取并处理。优选的,所述数据单元被保存在分布式文件系统中。优选的,所述数据源为kafka;和或,基于Spark,使用scala按照所述数据单元对所述保存的数据进行自动调取。优选的,所述数据单元被按照时间命名后保存在分布式文件系统中。优选的,所述基于Spark按照所述数据单元对所述保存的数据进行自动调取并处理包括:基于Spark,按照所述数据单元对所述保存的数据进行自动调取并按照指定开始的时间和保存位置进行处理。本专利技术另一方面还公开了一种基于Spark的流式数据处理装置,所述装置包括:数据切分单元,用于对数据源中的流式数据按时间为单位进行切分得到数据单元;数据保存单元,用于对所述数据单元分别保存;自动调取单元,用于基于Spark,按照所述数据单元对所述保存的数据进行自动调取;自动处理单元,用于基于Spark,按照所述数据单元对所述调取的数据进行处理。优选的,所述数据保存单元,用于将数据单元保存在分布式文件系统中。优选的,所述数据源为kafka;和或,所述自动调取单元,用于基于Spark,使用scala按照所述数据单元对所述保存的数据进行自动调取。优选的,所述数据保存单元,用于将所述数据单元按照时间命名后保存在分布式文件系统中。优选的,所述自动处理单元,用于基于Spark,按照所述数据单元对所述调取的数据按照指定开始的时间和保存位置进行处理。本专利技术通过以时间为单位划分流式数据并以时间为单位对数据进行处理,最小化了数据的处理量,大大减少了处理数据对机器内存的依赖,同时也能很快地继续排序以及数据之间的关联操作,可以很快得到小时为粒度的处理结果。附图说明为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本专利技术方法流程图;图2是本专利技术装置结构示意图。具体实施方式为了使本
的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。首先对本专利技术中出现的术语进行描述:Spark:是个通用的集群计算框架,通过将大量数据集计算任务分配到多台计算机上,提供高效内存计算。Kafka:是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。Scala:是一门多范式的编程语言,一种类似java的编程语言[1],设计初衷是实现可伸缩的语言[2]、并集成面向对象编程和函数式编程的各种特性。如图1所示,为本专利技术提供的一种基于Spark的流式数据的处理方法,包括:S11、对数据源中的流式数据按时间为单位进行切分得到数据单元并分别保存。比如按照小时为单位,将数据源中的流式数据进行切分,得到以小时为单位的各个数据单元。各个数据单元可被保存在分布式文件系统中。为进行识别,可将各个数据单元按照时间日期进行命名后保存。S12、基于Spark,按照所述数据单元对所述保存的数据进行自动调取并处理。按照划分好的数据单元进行自动调取并处理。在进行调取和处理时,可以按照时间排序进行,也可以根据需求单独调取、处理某个时刻的数据单元,处理完的结果在数据库中会自动按照时间排序。这样使得数据的处理有序且处理结果也能有序保存。在进行数据处理时,可指定数据单元开始的时间和存储位置,以便从指定的时间和存储位置进行数据处理。本专利技术的一个具体实施例中,我们可以在kafka数据源中按小时的粒度将流式数据切分为以日期时间命名的压缩数据单元,并且保存到分布式文件系统中。同时使用scala实现小时为单位的spark自动调取。通过指定数据开始处理的时间和位置,自动化按小时处理数据。因为数据切分后按小时的粒度,数据量大大缩小,对数据的遍历以及关联时间会因数据量的减小大大缩短,从而大大减少了处理数据对机器内存的依赖。而处理完之后按处理完的结果时间排序避免了整体排序,速度提升更明显。对应上述方法,本专利技术还提供了一种基于Spark的流式数据处理装置,如图2所示,装置包括:数据切分单元11,用于对数据源中的流式数据按时间单元进行切分得到数据单元。该数据源具体可为kafka。比如按照小时为单位,将数据源中的流式数据进行切分,得到以小时为单位的各个数据单元。数据保存单元12,用于对所述数据单元分别保存。其中,数据保存单元11可将数据单元保存在分布式文件系统中。各个数据单元可被保存在分布式文件系统中。为进行识别,可将各个数据单元按照时间日期进行命名后保存。自动调取单元13,用于基于Spark,按照所述数据单元对所述保存的数据进行自动调取。自动调取单元可基于Spark,使用scala按照数据单元对保存的数据进行自动调取。自动处理单元14,用于基于Spark,按照数据单元对调取的数据进行处理。自动处理单元具体可基于Spark,按照数据单元对调取的数据按照指定开始的时间和保存位置进行处理。如指定从分布式文件系统的第二保存位置的,时间为8:00的数据单元开始处理。则自动处理单元从该数据单元开始对保存本专利技术的一个具体实施例中,我们可以通过数据切分单元在kafka数据源中按小时的粒度将流式数据切分为以日期时间命名的压缩的数据单元,并且通过数据保存单元保存到分布式文件系统中。同时通过自动调取单元使用scala实现小时为单位的spark自动调取。通过指定数据开始处理的时间和位置,利用自动处理单元自动化按小时处理数据。因为数据切分后按小时的粒度,数据量大大缩小,对数据的遍历以及关联时间会因数据量的减小大大缩短,从而大大减少了处理数据对机器内存的依赖。而处理完之后按处理完的结果时间排序避免了整体排序,速度提升更明显。虽然通过实施例描绘了本申请,本领域普通技术人员知道,本申请有许多变形和变化而不脱离本申请的精神,希望所附的权利要求包括本文档来自技高网
...

【技术保护点】
一种基于Spark的流式数据处理方法,其特征在于,所述方法包括:对数据源中的流式数据按时间为单位进行切分得到数据单元并分别保存;基于Spark,按照所述数据单元对所述保存的数据进行自动调取并处理。

【技术特征摘要】
1.一种基于Spark的流式数据处理方法,其特征在于,所述方法包括:对数据源中的流式数据按时间为单位进行切分得到数据单元并分别保存;基于Spark,按照所述数据单元对所述保存的数据进行自动调取并处理。2.如权利要求1所述的基于Spark的流式数据处理方法,其特征在于,所述数据单元被保存在分布式文件系统中。3.如权利要求1所述的基于Spark的流式数据处理方法,其特征在于,所述数据源为kafka;和或,基于Spark,使用scala按照所述数据单元对所述保存的数据进行自动调取。4.如权利要求2所述的基于Spark的流式数据处理方法,其特征在于,所述数据单元被按照时间命名后保存在分布式文件系统中。5.如权利要求2所述的基于Spark的流式数据处理方法,其特征在于,所述基于Spark按照所述数据单元对所述保存的数据进行自动调取并处理包括:基于Spark,按照所述数据单元对所述保存的数据进行自动调取并按照指定开始的时间和保存位置进行处理。6.一种基于Spark的流式数据处理装置,其特征在于,所述装置包括:...

【专利技术属性】
技术研发人员:张良晖左磊严俊罗承成李阳桑晓龙
申请(专利权)人:苏州新科兰德科技有限公司
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1