一种读取数据的方法和装置与流程

文档序号:24930039发布日期:2021-05-04 11:19阅读:65来源:国知局
一种读取数据的方法和装置与流程

本发明涉及计算机技术领域,尤其涉及一种读取数据的方法和装置。



背景技术:

随着大数据的快速发展,业务场景越来越复杂,离线式的批处理框架mapreduce已经不能满足业务,大量的场景需要实时的数据处理结果来进行分析、决策。例如实时的用户推荐,普通历史数据的推荐已经不能满足场景,就需要采集前分钟,甚至式前几秒的数据进行分析。实时计算适用于这种对历史数据依赖不强,短时间内变化较大的数据。比如用户行为分析、舆情分析等等不断随环境和时间实时变化的数据都可能用到实时计算。实时计算一定要基于分布式的并行计算框架,单机对于短时间的高数据量远远达不到实时处理。

sparkstreaming是spark提供的分布式的大数据实时计算框架,是基于sparkcore(spark核心api)的扩展,它提供了动态地、高吞吐量地、可容错地流式数据处理。它可以从多个数据(如kafka、flume、kinesis、twitter或者tcpscokets等)中获取数据,然后使用复杂的算法和高级的函数算子(如:map、reduce、join或者window等)进行数据处理加工。最后可以将处理后的数据输出到文件系统、数据库或者可视化界面,同样也可以在数据流上使用机器学习和图形计算算法。

当sparkstreaming程序运行起来后,如何知道读取的数据是否消费了,是否有积压情况。现在普遍的做法是不断地获取最新位点和已经消费的位点,然后用最新位点减去已经消费的位点就是还没有消费的数据,如果超过一定阈值,就认为数据积压了,需要报警。

在实现本发明过程中,发明人发现现有技术中至少存在如下问题:

在sparkstreaming程序中,根据设置的时间批次间隔不断生成时间片数据,将数据从消息系统拉取到sparkstreaming集群中之后,如果数据在sparkstreaming的队列中排队,并且把位点信息上报给了消息系统,那么消息系统就无法准确地判断数据的积压情况了。



技术实现要素:

有鉴于此,本发明实施例提供一种读取数据的方法和装置,以解决无法准确地判断数据积压情况的技术问题。

为实现上述目的,根据本发明实施例的一个方面,提供了一种读取数据的方法,包括:

每隔预设时间批次间隔从消息系统中读取数据,并生成时间片数据;

分别将各个时间片数据转换成弹性分布式数据集,将各个弹性分布式数据集的标识及其对应的时间片数据的数据条数存储到批数据集合中;

待完成一个弹性分布式数据集的业务逻辑计算之后,将标识最小的弹性分布式数据集及其对应的时间片数据的数据条数从所述批数据集合中删除;

基于所述批数据集合中的记录数和预设积压批次阈值分析数据积压情况。

可选地,将各个弹性分布式数据集的标识及其对应的时间片数据的数据条数存储到批数据集合中,包括:

以弹性分布式数据集的标识为键、且以所述弹性分布式数据集对应的时间片数据的数据条数为值,存储到批数据集合中。

可选地,所述弹性分布式数据集的标识以自增方式生成。

可选地,待完成一个弹性分布式数据集的业务逻辑计算之后,将标识最小的弹性分布式数据集及其对应的时间片数据的数据条数从所述批数据集合中删除,包括:

每完成一个弹性分布式数据集的业务逻辑计算之后,按照标识的大小对各个弹性分布式数据集进行升序排序或者降序排序;

将标识最小的弹性分布式数据集及其对应的时间片数据的数据条数从所述批数据集合中删除。

可选地,基于所述批数据集合中的记录数和预设积压批次阈值分析数据积压情况,包括:

判断所述批数据集合中的记录数是否大于等于预设积压批次阈值;

若是,则将所述批数据集合中的记录数发送至预设联系人。

可选地,所述时间片数据的信息包括所述数据在所述消息系统中的开始位点、结束位点以及所述数据的条数;

每隔预设时间批次间隔从消息系统中读取数据之后,还包括:

将所述结束位点上报至所述消息系统。

可选地,在基于所述批数据集合中的记录数和预设积压批次阈值分析数据积压情况之前,还包括:

根据预设时间批次间隔和预设延迟最大时长,设置积压批次阈值。

另外,根据本发明实施例的另一个方面,提供了一种读取数据的装置,包括:

获取模块,用于每隔预设时间批次间隔从消息系统中读取数据,并生成时间片数据;

转换模块,用于分别将各个时间片数据转换成弹性分布式数据集,将各个弹性分布式数据集的标识及其对应的时间片数据的数据条数存储到批数据集合中;

删除模块,用于待完成一个弹性分布式数据集的业务逻辑计算之后,将标识最小的弹性分布式数据集及其对应的时间片数据的数据条数从所述批数据集合中删除;

分析模块,用于基于所述批数据集合中的记录数和预设积压批次阈值分析数据积压情况。

可选地,所述转换模块还用于:

以弹性分布式数据集的标识为键、且以所述弹性分布式数据集对应的时间片数据的数据条数为值,存储到批数据集合中。

可选地,所述弹性分布式数据集的标识以自增方式生成。

可选地,所述删除模块还用于:

每完成一个弹性分布式数据集的业务逻辑计算之后,按照标识的大小对各个弹性分布式数据集进行升序排序或者降序排序;

将标识最小的弹性分布式数据集及其对应的时间片数据的数据条数从所述批数据集合中删除。

可选地,所述分析模块还用于:

判断所述批数据集合中的记录数是否大于等于预设积压批次阈值;

若是,则将所述批数据集合中的记录数发送至预设联系人。

可选地,所述时间片数据的信息包括所述数据在所述消息系统中的开始位点、结束位点以及所述数据的条数;

所述获取模块还用于:每隔预设时间批次间隔从消息系统中读取数据之后,将所述结束位点上报至所述消息系统。

可选地,所述分析模块还用于:

在基于所述批数据集合中的记录数和预设积压批次阈值分析数据积压情况之前,根据预设时间批次间隔和预设延迟最大时长,设置积压批次阈值。

根据本发明实施例的另一个方面,还提供了一种电子设备,包括:

一个或多个处理器;

存储装置,用于存储一个或多个程序,

当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现上述任一实施例所述的方法。

根据本发明实施例的另一个方面,还提供了一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现上述任一实施例所述的方法。

上述发明中的一个实施例具有如下优点或有益效果:因为采用根据待完成一个弹性分布式数据集的业务逻辑计算之后,将标识最小的弹性分布式数据集及其对应的时间片数据的数据条数从批数据集合中删除,从而基于批数据集合中的记录数和预设积压批次阈值分析数据积压情况的技术手段,所以克服了现有技术中无法准确地判断消息积压情况的技术问题。本发明实施例通过对rdd的id和数据条数进行记录、排序、计算等方法,当sparkstreaming程序从消息系统中读取数据时,能够准确地判断数据积压情况,可以让sparkstreaming程序负责人能够更准确地掌握程序的积压情况、时效性、健壮性,能够在第一时间发现问题,并作出相应的处理。

上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。

附图说明

附图用于更好地理解本发明,不构成对本发明的不当限定。其中:

图1是根据本发明实施例的读取数据的方法的主要流程的示意图;

图2是sparkstreaming接收kafka推送的消息数据的示意图;

图3是sparkstreaming从kafka中拉取消息数据的示意图;

图4是根据本发明一个可参考实施例的读取数据的方法的主要流程的示意图;

图5是根据本发明实施例的读取数据的装置的主要模块的示意图;

图6是本发明实施例可以应用于其中的示例性系统架构图;

图7是适于用来实现本发明实施例的终端设备或服务器的计算机系统的结构示意图。

具体实施方式

以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。

图1是根据本发明实施例的读取数据的方法的主要流程的示意图。作为本发明的一个实施例,如图1所示,所述读取数据的方法可以包括:

步骤101,每隔预设时间批次间隔从消息系统中读取数据,并生成时间片数据。

时间批次间隔可以根据业务对实时性要求的紧急程度来设置,比如1秒、2秒、5秒等,在该步骤中,每隔预设时间批次间隔从消息系统中读取数据,按照时间批次间隔生成时间片,从而生成每个时间片对应的时间片数据。其中,所述时间片数据的信息可以包括从消息系统中读取的数据在所述消息系统中的开始位点、结束位点以及所述数据的条数。可选地,在读取数据之后,还可以将所述结束位点上报至所述消息系统,使得消息系统可以知道消息的消费情况。可选地,所述消息系统可以是分布式发布订阅消息系统,比如kafka或者kinesis等。

可选地,读取数据的方式可以有两种:一种是接收消息系统推送的数据,另一个是直接从消息系统拉取数据,本发明实施例对此不作限制。

以kafka为例,如图2所示,sparkstreaming中的receiver(接收器)接收kafka推送的消息数据。这种方式利用receiver来接收kafka中的数据,其最基本是使用kafka高阶用户接口。对于所有的接收器,从kafka接收来的数据会存储在spark的executor(执行器)中,之后sparkstreaming提交的job(作业)会处理这些数据。具体地,driver(驱动器)负责不断地启动job去处理数据,executor中的receiver负责接收kafka推送的数据,receiver可以开启wal(writeaheadlog)把数据保存到磁盘日志上,防止数据丢失。receiver还可以把已经接收的数据的位点信息上报给zookeeper。

如图3所示,sparkstreaming直接从kafka中拉取数据。直接读取方式:在spark1.3之后,引入了direct方式。不同于图2所示的receiver方式,direct方式没有receiver这一层,direct会周期性地获取kafka中每个topic(主题,kafka中的一个表)的每个partition(分区,kafka中一个topic可以存在多个分区中)中的最新位点信息(offsets),之后根据设定的maxrateperpartition来处理每个弹性分布式数据集。具体地,driver会周期性地查询kafka,来获得每个topic+partition的最新的位点信息,从而定义每个批次的位点范围。driver使用位点范围来启动job去处理数据。executor使用kafka的简单consumerapi(消费接口)来获取kafka指定位点范围的数据。

步骤102,分别将各个时间片数据转换成弹性分布式数据集,将各个弹性分布式数据集的标识及其对应的时间片数据的数据条数存储到批数据集合中。

随着时间增加,会生成多个时间片数据,在步骤102中,将时间片数据转换为sparkstreaming中的数据结构dstream,再将dstream转换成弹性分布式数据集(rdd)。因此,每个时间片对应地生成一个rdd。

在生成rdd时,以自增方式生成rdd的id,并将id分配给该rdd。然后通过接口读取rdd信息,获取到rdd的id以及rdd对应的时间片数据的数据条数,并将rdd的id以及rdd对应的时间片数据的数据条数存储到批数据集合(batchmap)中。

可选地,以弹性分布式数据集的标识为键(key)、且以所述弹性分布式数据集对应的时间片数据的数据条数为值(value),存储到批数据集合中。

步骤103,待完成一个弹性分布式数据集的业务逻辑计算之后,将标识最小的弹性分布式数据集及其对应的时间片数据的数据条数从所述批数据集合中删除。

通过foreachrdd方法将计算逻辑分配到驱动器节点进行计算,对rdd进行操作,业务逻辑对rdd中的数据进行计算。在完成计算之后,将计算结果保存到外边存储系统中,比如hbase、mysql、redis等。

由于rdd的id是按照自增方式生成,因此按照id由小到大的顺序依次对rdd进行业务逻辑计算。每完成一个弹性分布式数据集的业务逻辑计算之后,按照标识的大小对各个弹性分布式数据集进行升序排序或者降序排序;将标识最小的弹性分布式数据集及其对应的时间片数据的数据条数从所述批数据集合中删除。

可选地,可以调用java提供的collections.sort方法对batchmap中的数据按照key进行排序,排序完成后,找到最小的id,删除该id的记录,那么batchmap中的记录数(size)减1。

步骤104,基于所述批数据集合中的记录数和预设积压批次阈值分析数据积压情况。

可选地,步骤104可以包括:判断所述批数据集合中的记录数是否大于等于预设积压批次阈值;若是,则将所述批数据集合中的记录数发送至预设联系人。从batchmap中删除了最小的id的记录后,确定batchmap中当前的记录数(size),判断batchmap中的记录数是否大于等于预设的积压批次阈值,如果是,说明发生了数据积压,将batchmap中的size通过短信或邮件发送给程序负责人,然后跳转到步骤101。如果否,说明没有发生数据积压,则直接跳转到步骤101。

需要指出的是,batchmap中的size也就是sparkstreaming上积压的批次数,因此通过size与预设的积压批次阈值可以准确地分析出数据积压情况。

可选地,在步骤104之前,还包括:根据预设时间批次间隔和预设延迟最大时长,设置积压批次阈值。具体地,可以根据业务对实时性要求的紧急程度设置积压批次阈值,假设时间批次间隔是1秒钟,业务方希望延迟不会超过30秒钟,那么可以将积压批次阈值设置为30。当数据在sparkstreaming集群中排队时,本发明实施例通过批数据集合中的记录数和预设积压批次阈值可以准确地判断出数据积压情况并进行报警。

根据上面所述的各种实施例,可以看出本发明通过根据待完成一个弹性分布式数据集的业务逻辑计算之后,将标识最小的弹性分布式数据集及其对应的时间片数据的数据条数从批数据集合中删除,从而基于批数据集合中的记录数和预设积压批次阈值分析数据积压情况的技术手段,解决了现有技术中无法准确地判断消息积压情况的技术问题。本发明实施例通过对rdd的id和数据条数进行记录、排序、计算等方法,当sparkstreaming程序从消息系统中读取数据时,能够准确地判断数据积压情况,可以让sparkstreaming程序负责人能够更准确地掌握程序的积压情况、时效性、健壮性,能够在第一时间发现问题,并作出相应的处理。

因此本发明实施例有利于建立起了一套对sparksteaming程序的时效性监控系统,能够实时地对数据积压情况作出反馈和报警,为实时数据仓库、实时数据产品提供了自动化、智能化的便利。

图4是根据本发明一个可参考实施例的读取数据的方法的主要流程的示意图。

步骤401,根据预设时间批次间隔和预设延迟最大时长,设置积压批次阈值。

可以根据业务对实时性要求的紧急程度设置积压批次阈值,假设时间批次间隔是1秒钟,业务方希望延迟不会超过60秒钟,那么可以将积压批次阈值设置为60。

步骤402,每隔预设时间批次间隔从消息系统中读取数据并生成时间片数据,将所述结束位点上报至所述消息系统。

每隔预设时间批次间隔从消息系统中读取数据,按照时间批次间隔生成时间片,从而生成每个时间片对应的时间片数据。其中,所述时间片数据的信息可以包括从消息系统中读取的数据在所述消息系统中的开始位点、结束位点以及所述数据的条数。

在读取数据之后,需要将所述结束位点上报至所述消息系统,使得消息系统可以知道消息的消费情况。

步骤403,分别将各个时间片数据转换成弹性分布式数据集,将各个弹性分布式数据集的标识及其对应的时间片数据的数据条数存储到批数据集合中。

将时间片数据转换为sparkstreaming中的数据结构dstream,再将dstream转换成弹性分布式数据集(rdd)。因此,每个时间片对应地生成一个rdd。在生成rdd时,以自增方式生成rdd的id,并将id分配给该rdd。然后通过接口读取rdd信息,获取到rdd的id以及rdd对应的时间片数据的数据条数,并将rdd的id以及rdd对应的时间片数据的数据条数存储到批数据集合(batchmap)中。以弹性分布式数据集的标识为键(key)、且以所述弹性分布式数据集对应的时间片数据的数据条数为值(value),存储到批数据集合中。

步骤404,对标识最小的弹性分布式数据集进行业务逻辑计算,并将计算结果保存至外边存储系统中。

sparkstreaming按照id由小到大的顺序依次对rdd进行业务逻辑计算。

步骤405,按照标识的大小对各个弹性分布式数据集进行升序排序或者降序排序。

每完成一个rdd的业务逻辑计算之后,可以调用java提供的collections.sort方法对batchmap中的数据按照key进行排序。

步骤406,将标识最小的弹性分布式数据集及其对应的时间片数据的数据条数从所述批数据集合中删除。

排序完成后,找到最小的id,删除该id的记录从batchmap中删除,那么batchmap中的size减1。

步骤407,判断所述批数据集合中的记录数是否大于等于预设积压批次阈值;若是,则执行步骤408;若否,则执行步骤402。

步骤408,将所述批数据集合中的记录数发送至预设联系人。

如果size≥积压批次阈值,说明发生了数据积压,将batchmap中的size通过短信或邮件发送给程序负责人,然后跳转到步骤402。

如果size<积压批次阈值,说明没有发生数据积压,则直接跳转到步骤402。

当数据在sparkstreaming集群中排队时,本发明实施例通过批数据集合中的记录数和预设积压批次阈值可以准确地判断出数据积压情况并进行报警。

另外,在本发明一个可参考实施例中读取数据的方法的具体实施内容,在上面所述读取数据的方法中已经详细说明了,故在此重复内容不再说明。

图5是根据本发明实施例的读取数据的装置的主要模块的示意图,如图5所示,所述读取数据的装置500包括获取模块501、转换模块502、删除模块503和分析模块504。其中,获取模块501用于每隔预设时间批次间隔从消息系统中读取数据,并生成时间片数据;转换模块502用于分别将各个时间片数据转换成弹性分布式数据集,将各个弹性分布式数据集的标识及其对应的时间片数据的数据条数存储到批数据集合中;删除模块503用于待完成一个弹性分布式数据集的业务逻辑计算之后,将标识最小的弹性分布式数据集及其对应的时间片数据的数据条数从所述批数据集合中删除;分析模块504用于基于所述批数据集合中的记录数和预设积压批次阈值分析数据积压情况。

可选地,所述转换模块502还用于:

以弹性分布式数据集的标识为键、且以所述弹性分布式数据集对应的时间片数据的数据条数为值,存储到批数据集合中。

可选地,所述弹性分布式数据集的标识以自增方式生成。

可选地,所述删除模块503还用于:

每完成一个弹性分布式数据集的业务逻辑计算之后,按照标识的大小对各个弹性分布式数据集进行升序排序或者降序排序;

将标识最小的弹性分布式数据集及其对应的时间片数据的数据条数从所述批数据集合中删除。

可选地,所述分析模块504还用于:

判断所述批数据集合中的记录数是否大于等于预设积压批次阈值;

若是,则将所述批数据集合中的记录数发送至预设联系人。

可选地,所述时间片数据的信息包括所述数据在所述消息系统中的开始位点、结束位点以及所述数据的条数;

所述获取模块501还用于:每隔预设时间批次间隔从消息系统中读取数据之后,将所述结束位点上报至所述消息系统。

可选地,所述分析模块504还用于:

在基于所述批数据集合中的记录数和预设积压批次阈值分析数据积压情况之前,根据预设时间批次间隔和预设延迟最大时长,设置积压批次阈值。

根据上面所述的各种实施例,可以看出本发明通过根据待完成一个弹性分布式数据集的业务逻辑计算之后,将标识最小的弹性分布式数据集及其对应的时间片数据的数据条数从批数据集合中删除,从而基于批数据集合中的记录数和预设积压批次阈值分析数据积压情况的技术手段,解决了现有技术中无法准确地判断消息积压情况的技术问题。本发明实施例通过对rdd的id和数据条数进行记录、排序、计算等方法,当sparkstreaming程序从消息系统中读取数据时,能够准确地判断数据积压情况,可以让sparkstreaming程序负责人能够更准确地掌握程序的积压情况、时效性、健壮性,能够在第一时间发现问题,并作出相应的处理。

需要说明的是,在本发明所述读取数据的装置的具体实施内容,在上面所述读取数据的方法中已经详细说明了,故在此重复内容不再说明。

图6示出了可以应用本发明实施例的读取数据的方法或读取数据的装置的示例性系统架构600。

如图6所示,系统架构600可以包括终端设备601、602、603,网络604和服务器605。网络604用以在终端设备601、602、603和服务器605之间提供通信链路的介质。网络604可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。

用户可以使用终端设备601、602、603通过网络604与服务器604交互,以接收或发送消息等。终端设备601、602、603上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。

终端设备601、602、603可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。

服务器605可以是提供各种服务的服务器,例如对用户利用终端设备601、602、603所浏览的购物类网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的物品信息查询请求等数据进行分析等处理,并将处理结果(例如目标推送信息、物品信息——仅为示例)反馈给终端设备。

需要说明的是,本发明实施例所提供的读取数据的方法一般由服务器605执行,相应地,所述读取数据的装置一般设置在服务器605中。本发明实施例所提供的读取数据的方法也可以由终端设备601、602、603执行,相应地,所述读取数据的装置可以设置在终端设备601、602、603中。

应该理解,图6中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。

下面参考图7,其示出了适于用来实现本发明实施例的终端设备的计算机系统700的结构示意图。图7示出的终端设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。

如图7所示,计算机系统700包括中央处理单元(cpu)701,其可以根据存储在只读存储器(rom)702中的程序或者从存储部分708加载到随机访问存储器(ram)703中的程序而执行各种适当的动作和处理。在ram703中,还存储有系统700操作所需的各种程序和数据。cpu701、rom702以及ram703通过总线704彼此相连。输入/输出(i/o)接口705也连接至总线704。

以下部件连接至i/o接口705:包括键盘、鼠标等的输入部分706;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分707;包括硬盘等的存储部分708;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分709。通信部分709经由诸如因特网的网络执行通信处理。驱动器710也根据需要连接至i/o接口705。可拆卸介质711,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器710上,以便于从其上读出的计算机程序根据需要被安装入存储部分708。

特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分709从网络上被下载和安装,和/或从可拆卸介质711被安装。在该计算机程序被中央处理单元(cpu)701执行时,执行本发明的系统中限定的上述功能。

需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、rf等等,或者上述的任意合适的组合。

附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括获取模块、转换模块、删除模块和分析模块,其中,这些模块的名称在某种情况下并不构成对该模块本身的限定。

作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:每隔预设时间批次间隔从消息系统中读取数据,并生成时间片数据;分别将各个时间片数据转换成弹性分布式数据集,将各个弹性分布式数据集的标识及其对应的时间片数据的数据条数存储到批数据集合中;待完成一个弹性分布式数据集的业务逻辑计算之后,将标识最小的弹性分布式数据集及其对应的时间片数据的数据条数从所述批数据集合中删除;基于所述批数据集合中的记录数和预设积压批次阈值分析数据积压情况。

根据本发明实施例的技术方案,因为采用根据待完成一个弹性分布式数据集的业务逻辑计算之后,将标识最小的弹性分布式数据集及其对应的时间片数据的数据条数从批数据集合中删除,从而基于批数据集合中的记录数和预设积压批次阈值分析数据积压情况的技术手段,所以克服了现有技术中无法准确地判断消息积压情况的技术问题。本发明实施例通过对rdd的id和数据条数进行记录、排序、计算等方法,当sparkstreaming程序从消息系统中读取数据时,能够准确地判断数据积压情况,可以让sparkstreaming程序负责人能够更准确地掌握程序的积压情况、时效性、健壮性,能够在第一时间发现问题,并作出相应的处理。

上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

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