CN111143082B - 读取RabbitMQ数据的方法及装置 - Google Patents
读取RabbitMQ数据的方法及装置 Download PDFInfo
- Publication number
- CN111143082B CN111143082B CN201811311846.1A CN201811311846A CN111143082B CN 111143082 B CN111143082 B CN 111143082B CN 201811311846 A CN201811311846 A CN 201811311846A CN 111143082 B CN111143082 B CN 111143082B
- Authority
- CN
- China
- Prior art keywords
- data
- rabbitmq
- reading
- receiver
- time
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
- Retry When Errors Occur (AREA)
Abstract
本发明涉及大数据技术领域,公开了一种基于Spark Streaming读取RabbitMQ数据的方法及装置,用于实现Spark Streaming从RabbitMQ数据读取数据进行处理,使Spark Streaming接收到的数据流更加稳定和准确,并且避免了Spark Streaming停止运行后数据的丢失。所述方法包括:通过RabbitMQ的接收器Receiver读取所述RabbitMQ中的数据,并将所述数据存储在指定内存中;通过Spark Streaming的Receiver从所述指定内存中读取所述数据,并对所述数据进行批处理。
Description
技术领域
本发明涉及大数据技术领域,尤其涉及一种基于Spark Streaming读取RabbitMQ数据的方法及装置。
背景技术
大数据时代,大数据的处理技术不断的发展,大量的数据通过队列进行数据的收集和消费。Kafka和RabbitMQ同为消息代理,且都以分布式部署为目的。Kafka是LinkedIn开源的分布式发布-订阅消息***,其主要特点是基于Pull的模式来处理消息消费,追求高吞吐量,但对消息的重复、丢失、错误没有严格要求。RabbitMQ是使用Erlang语言开发的开源消息队列***,基于AMQP协议来实现,相较于kafka而言,RabbitMQ可用性、稳定性、可靠性更高。大数据时代对数据的可靠性、稳定性、准确性要求也越来越高,因此,越来越多的公司选择RabbitMQ作为消息代理。
发明内容
本发明实施例提供了一种基于Spark Streaming读取RabbitMQ数据的方法及装置,用于实现Spark Streaming从RabbitMQ数据读取数据进行处理,使得Spark Streaming接收到的数据流更加稳定和准确,并且避免了Spark Streaming停止运行后数据的丢失。
第一方面,本发明实施例提供了一种基于Spark Streaming读取RabbitMQ数据的方法,包括:
通过RabbitMQ的接收器Receiver读取所述RabbitMQ中的数据,并将所述数据存储在指定内存中;
通过Spark Streaming的Receiver从所述指定内存中读取所述数据,并对所述数据进行批处理。
可选的,所述通过RabbitMQ的Receiver读取所述RabbitMQ中的数据,具体包括:
确定所述RabbitMQ的receiver读取所述RabbitMQ中的数据的时间节点是否到达预先设置的所述RabbitMQ的Receiver停止读取所述RabbitMQ中的数据的第一时间;
若未到达所述第一时间,则通过所述RabbitMQ的receiver读取所述RabbitMQ中的数据。
可选的,所述通过Spark Streaming的receiver从所述指定内存中读取所述数据,还包括:
启动所述Spark Streaming;
确定所述Spark Streaming的Receiver从所述指定内存中读取所述数据的时间节点是否到达预先设置的所述Spark Streaming停止运行的第二时间,其中,所述第二时间晚于所述第一时间;
若未到达所述第二时间,则通过Spark Streaming的Receiver从所述指定内存中读取所述数据。
可选的,若确定所述RabbitMQ的Receiver读取所述RabbitMQ中的数据的时间节点到达所述第一时间时,所述方法还包括:确定所述RabbitMQ的Receiver停止从所述RabbitMQ中读取数据;
若确定所述Spark Streaming的Receiver从所述指定内存中读取所述数据的时间节点到达所述第二时间,所述方法还包括:停止运行所述Spark Streaming。
可选的,所述Spark Streaming中包括多个Receiver,所述通过SparkStreaming的Receiver从所述指定内存中读取所述数据,具体为:
通过所述Spark Streaming的多个Receiver从所述指定内存中并行读取所述数据。
第二方面,本发明实施例还提供一种基于Spark Streaming读取RabbitMQ数据的装置,包括:
存储单元,用于通过RabbitMQ的接收器Receiver读取所述RabbitMQ中的数据,并将所述数据存储在指定内存中;
读取单元,用于通过Spark Streaming的Receiver从所述指定内存中读取所述数据,并对所述数据进行批处理。
可选的,所述存储单元,还用于:
确定所述RabbitMQ的receiver读取所述RabbitMQ中的数据的时间节点是否到达预先设置的所述RabbitMQ的Receiver停止读取所述RabbitMQ中的数据的第一时间;
若未到达所述第一时间,则通过所述RabbitMQ的receiver读取所述RabbitMQ中的数据。
可选的,所述读取单元,还用于:
启动所述Spark Streaming;
确定所述Spark Streaming的Receiver从所述指定内存中读取所述数据的时间节点是否到达预先设置的所述Spark Streaming停止运行的第二时间,其中,所述第二时间晚于所述第一时间;
若未到达所述第二时间,则通过Spark Streaming的Receiver从所述指定内存中读取所述数据。
可选的,若确定所述RabbitMQ的Receiver读取所述RabbitMQ中的数据的时间节点到达所述第一时间时,所述方法存储单元还用于,确定所述RabbitMQ的Receiver停止从所述RabbitMQ中读取数据;
若确定所述Spark Streaming的Receiver从所述指定内存中读取所述数据的时间节点到达所述第二时间,所述读取单元还用于,停止运行所述SparkStreaming。
可选的,所述Spark Streaming中包括多个Receiver,所述读取单元,还用于,通过所述多个Receiver从所述指定内存中并行读取所述数据。
在本发明实施例的技术方案中,首先通过RabbitMQ的接收器Receiver读取所述RabbitMQ中的数据,并将所述数据存储在指定内存中,再通过SparkStreaming的Receiver从所述指定内存中读取所述数据,并对所述数据进行批处理,实现Spark Streaming与RabbitMQ的连接,为Spark Streaming提供了更稳定和更准确的数据来源。并在此基础上在RabbitMQ的receiver中预先设置有停止读取RabbitMQ中数据并存到内存中的时间,在Spark Streaming中也预先设置停止运行的时间,且停止从RabbitMQ中读取数据并存到指定内存中的时间早于Spark Streaming停止运行的时间,即Spark Streaming将内存中的数据处理完后才停止运行,进而避免了数据的丢失。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例。
图1为本发明实施例提供的一种基于Spark Streaming读取RabbitMQ数据的方法流程图;
图2为本发明实施例提供的从RabbitMQ队列中读取数据的流程图;
图3为本发明实施例提供的Spark Streaming从内存中读取数据的流程图;
图4为本发明实施例提供的一种基于Spark Streaming读取RabbitMQ数据的示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明技术方案的一部分实施例,而不是全部的实施例。基于本申请文件中记载的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明技术方案保护的范围。
下面对本发明实施例中涉及的部分概念进行介绍。
(1)Spark Streaming是Spark核心API的一个扩展,可以实现高吞吐量的、具备容错机制的实时流数据的处理,是一个对实时数据流进行高通量、容错处理的流式处理***,可以对多种数据源(如Kafka、Flume、Twitter、Zero和TCP套接字)进行类似MapReduce和Join等复杂操作,并将结果保存到外部文件***、数据库或应用到实时仪表盘。其基本原理是把输入数据以某一时间间隔批量的处理,当批处理间隔缩短到秒级时,便可以用于处理实时数据流。
(2)RabbitMQ:(Rabbit Message Queue,消息队列),但不能仅仅理解其为消息队列,将其理解为消息代理更为合适。RabbitMQ作为一个消息代理,主要和消息打交道,负责接收并转发消息。RabbitMQ提供了可靠的消息机制、跟踪机制和灵活的消息路由,支持消息集群和分布式部署,适用于排队算法、秒杀活动、消息分发、异步处理、数据同步、处理耗时任务等应用场景。
在具体的实践过程中,本发明的发明人发现,现有技术中通常将kafka作为消息代理,采用Spark Streaming与kafka对接的组合框架对数据进行实时处理,但kafka对消息的重复、丢失、错误没有严格要求,其在可用性、稳定性和可靠性都不如RabbitMQ,所以,采用Spark Streaming与kafka对接的组合框架对数据进行实时处理难免会出现数据丢失的情形。因此,在一些对数据一致性、稳定性和可靠性要求较高的场景更倾向于使用RabbitMQ作为消息代理与Spark Streaming对接来对数据进行实时处理。
基于此,本发明实施例提供了一种基于Spark Streaming读取RabbitMQ数据的方法,该方法先通过RabbitMQ的接收器receiver,读取RabbitMQ队列中存储的数据,并将读取的数据存储到指定内存中,然后开启Spark Streaming,通过Spark Streaming的receiver从指定内存中读取数据,进而对读取的数据进行批处理。所以,实现Spark Streaming与RabbitMQ的连接,为Spark Streaming提供了更稳定和更准确的数据来源,并且避免了Spark Streaming停止运行后数据的丢失。
下面结合说明书附图介绍本发明实施例提供的技术方案。
请参见图1,为本发明实施例提供的一种连接Spark Streaming和RabbitMQ的方法,包括:
步骤101:通过RabbitMQ的接收器Receiver读取RabbitMQ中的数据,并将数据存储在指定内存中。
在本发明实施例中,要使RabbitMQ队列中的数据能够存储到指定的内存中,首先需要在RabbitMQ的程序中新建一个类来继承Receiver类,该新建类与Receiver类相同,都包含有receive方法和save方法,在此,可看成是新建一个Receiver类。其中,新建的Receiver类中的receive方法主要用于接收数据,save方法主要用于将通过receive方法接收的数据存储在内存中。所以,在新建一个Receiver类的同时,需要重写新建的Receiver类中的receive方法和save方法,从而,通过新建的Receiver读取RabbitMQ队列存储的数据,并将读取的数据存储到指定的内存中。
需要说明的是,为了使从RabbitMQ队列中读取的数据能存到指定的内存中等待处理,在新建RabbitMQ的Receiver类时,会给Receiver进行赋值操作,通过该赋值操作,可将RabbitMQ的Receiver读取到的数据存储到指定的内存中。存储在指定内存中的数据并不像存储在磁盘中的数据一样可以永久的存储,一旦断电或者与其对应的处理数据的程序终止,内存中未被处理完的数据将会丢失。
一种可选的实施方式,上述步骤101可以按照如图2所示的步骤执行,图2所示的步骤包括:
步骤201:确定RabbitMQ的Receiver读取RabbitMQ中的数据的时间节点是否到达预先设置的RabbitMQ的Receiver停止读取RabbitMQ中的数据的第一时间;
步骤202:若未到达第一时间,则通过RabbitMQ的Receiver读取RabbitMQ中的数据。
如上文所述,内存中的数据在与内存对应的数据处理***终止处理数据后,若还有未处理完成的数据,存储在内存中的数据将会因数据处理***的停止而丢失,所以,为了防止内存中数据的丢失,在数据处理***停止处理数据之前,需要预先设置有停止往与数据处理***对应的内存中存储取数据。即在本发明实施例中,应当预先设置RabbitMQ的receiver停止从RabbitMQ队列中读取数据的时间,且预先设置的RabbitMQ的receiver停止读取数据的时间要早于Spark Streaming停止运行的时间,一旦RabbitMQ的receiver停止读取数据,当然也不会有数据存储到内存中。
所以,在通过RabbitMQ的Receiver从RabbitMQ队列中读取数据保存到指定的内存中时,首先要确定当前RabbitMQ的Receiver读取数据的时间节点是否到达停止从RabbitMQ读取数据的第一时间,若确定出当前RabbitMQ的Receiver读取数据的时间节点未到达停止RabbitMQ读取的时间,则可继续读取数据并将数据保存到内存中;若确定出当前RabbitMQ的Receiver读取的时间正好到达预先设置的停止从RabbitMQ队列中读取数据的第一时间或已经超过该第一时间,则停止从RabbitMQ队列中读取数据,即停止往内存中存储数据,所以,存储在内存中数据不会再增加。
例如,假设预先设定RabbitMQ的Receiver停止从RabbitMQ队列中读取数据的时间为21点59分,当确定出的当前RabbitMQ的Receiver读取数据的时间节点早于21点59分时,RabbitMQ的Receiver才会从RabbitMQ队列中读取数据,当确定出的当前RabbitMQ的Receiver读取数据的时间节点恰好处于21点59分或者超过21点59分时,RabbitMQ的Receiver则会停止从RabbitMQ队列中读取数据。
步骤102:通过Spark Streaming的Receiver从指定内存中读取数据,并对数据进行批处理。
在本发明实施例中,Spark Streaming用于处理从RabbitMQ队列中读取的数据,Spark Streaming可通过Receiver从指定的内存中读取出通过RabbitMQ的Receiver从RabbitMQ队列中读取并保存在指定内存中的数据,SparkStreaming和RabbitMQ的连接方式可参见图4,其中,Spark Streaming可以通过一个Receiver从指定的内存中读取数据,也可以是多个Receiver从指定的内存中并行读取数据,Receiver的个数可根据读取数据的实际需求自行定义。
同RabbitMQ中的Receiver一样,在定义Spark Streaming中的Receiver同时,也需要对Spark Streaming中的Receiver进行了赋值操作,通过该赋值操作,Spark Streaming中的Receiver可以找到存储从RabbitMQ队列中读取的数据的内存,并从该内存中读取数据来处理。
一种可选的实施方式,上述步骤102可以按照如图3所示的步骤执行,图3所示的步骤包括:
步骤301:启动Spark Streaming;
步骤302:确定Spark Streaming的Receiver从指定内存中读取数据的时间节点是否到达预先设置的Spark Streaming停止运行的第二时间,其中,第二时间晚于第一时间;
步骤302:若未到达第二时间,则通过Spark Streaming的Receiver从指定内存中读取数据。
在具体的实践过程中,一些企业因业务需要,不需要全天开启SparkStreaming处理数据,只需在需要使用Spark Streaming服务对数据进行处理的时段内开启SparkStreaming即可。Spark Streaming开启后会先创建一个Streaming context(SparkStreaming的运行环境),然后才开始处理数据。相对的,在不需要使用Spark Streaming处理数据时,可以停止运行Spark Streaming。
在本发明实施例中,Spark Streaming运行时,Spark Streaming的Receiver每隔一段时间,会从内存中读取一批数据来进行处理,为了能使SparkStreaming更好的停止,一般将Spark Streaming处理一批数据的时间设置为Spark Streaming的Receiver从内存中的读取数据的时间间隔。当RabbitMQ的Receiver停止从RabbitMQ队列中读取数据后,内存中的数据将不会再增加,Spark Streaming处理完成上次读取的数据后,会继续通过Receiver从内存中读取数据,若内存中的数据已经被Streaming的Receive在上一次读取数据时全部读取完,则Spark Streaming的Receiver此次将读取不到数据,Spark Streaming将会自动停止运行。
例如,RabbitMQ的Receiver停止从RabbitMQ队列中读取数据后,假设SparkStreaming的Receiver每隔5s会从内存中读取一批数据进行处理,设第N次从内存中读取数据的时间为22点整,则第N+1次从内存中读取数据的时间为22点过5秒,若Spark Streaming的Receiver在22点整第N次从内存中读取时,已经将内存中的数据全部读取出来,并进行处理后,Spark Streaming的Receiver在22点过5秒第N+1次从内存中读取数据时,则读取不出数据,此时,Spark Streaming将自动停止运行。
上文所述自动停止Spark Streaming的方法在一些情况下可能失灵,所以,为了更好的停止Spark Streaming的运行,本发明实施例中可以预先设置SparkStreaming停止运行的第二时间,其中,预先设置的Spark Streaming停止运行的第二时间晚于预先设置的停止RabbitMQ的receiver从RabbitMQ队列中读取的数据的第一时间,这样才能保证在SparkStreaming停止运行后,RabbitMQ的Receiver不会再从RabbitMQ队列中读取数据,所以不会再有数据存入内存中,从而避免内存中未被处理的数据丢失。
在本发明实施例中,为了防止在Spark Streaming停止运行后,造成内存中还未处理完成数据丢失,在到达Spark Streaming停止运行的第二时间后,SparkStreaming不会立即停止数据的处理,而是会调用一个awaitTerminationOrTimeout(t)函数,通过调用awaitTerminationOrTimeout(t)函数,可以实现在Spark Streaming将内存中还未处理完成的数据全部处理完成后,才真正停止Spark Streaming的运行。
例如,假设用户设置Spark Streaming在22点整时停止服务,当在22点整时,SparkStreaming并不会立即停止运行,而是会调用一个awaitTerminationOrTimeout(t)函数,awaitTerminationOrTimeout(t)函数会控制Spark Streaming的Receiver继续读取内存中等待处理的数据来处理,当内存中的数据全部被读取出来处理完成之后,Spark Streaming才会真正的停止运行。
在本发明实施例中,通过Spark Streaming的Receiver从指定内存中读取数据时,首先要确定出当前Spark Streaming的Receiver从指定内存中读取数据的时间节点是否到达Spark Streaming停止的时间,若确定出当前Spark Streaming的Receiver从指定内存中读取数据的时间节点正好到达或者已经超过SparkStreaming停止运行的第二时间,则停止运行Spark Streaming,若确定出的当前时间节点未到达Spark Streaming停止运行的第二时间,则Spark Streaming的Receiver继续从指定的内存中读取数据,并对读取的数据进行处理。
需要说明的是,本实施例中,Spark Streaming的Receiver从内存中读取数据之后,被读取的数据所占的内存将会释放,所以Spark Streaming的Receiver只能从内存中读取到未被读取过的数据。
所以,通过上述方法,首先通过RabbitMQ的接收器Receiver读取出RabbitMQ队列中存储的数据,并将读取出的数据存储在指定内存中,再通过Spark Streaming的Receiver将指定内存中存储的数据读取出来,并对读取出数据进行批处理。RabbitMQ的receiver中预先设置有停止读取RabbitMQ中数据并存到内存中的时间,Spark Streaming中也预先设置有停止运行的时间,且停止从RabbitMQ中读取数据并存到内存中的时间早于SparkStreaming停止运行的时间。进而,当到达预设的RabbitMQ的接收器receiver停止读取数据的时间后,RabbitMQ的接收器receiver停止读取数据,不再往内存中存入数据,当SparkStreaming将内存中的数据处理完后才停止运行,从而避免了数据的丢失。
基于同一发明构思,本发明实施例中提供了一种基于Spark Streaming读取RabbitMQ数据的装置,该装置的基于Spark Streaming读取RabbitMQ数据的方法的具体实施可参见上述方法实施例部分的描述,重复之处不再赘述,该装置包括:
存储单元,用于通过RabbitMQ的接收器Receiver读取所述RabbitMQ中的数据,并将所述数据存储在指定内存中;
读取单元,用于通过Spark Streaming的Receiver从所述指定内存中读取所述数据,并对所述数据进行批处理。
可选的,所述存储单元,还用于:
确定所述RabbitMQ的receiver读取所述RabbitMQ中的数据的时间节点是否到达预先设置的所述RabbitMQ的Receiver停止读取所述RabbitMQ中的数据的第一时间;
若未到达所述第一时间,则通过所述RabbitMQ的receiver读取所述RabbitMQ中的数据。
可选的,所述读取单元,还用于:
启动所述Spark Streaming;
确定所述Spark Streaming的Receiver从所述指定内存中读取所述数据的时间节点是否到达预先设置的所述Spark Streaming停止运行的第二时间,其中,所述第二时间晚于所述第一时间;
若未到达所述第二时间,则通过Spark Streaming的Receiver从所述指定内存中读取所述数据。
可选的,若确定所述RabbitMQ的Receiver读取所述RabbitMQ中的数据的时间节点到达所述第一时间时,所述方法存储单元还用于,确定所述RabbitMQ的Receiver停止从所述RabbitMQ中读取数据;
若确定所述Spark Streaming的Receiver从所述指定内存中读取所述数据的时间节点到达所述第二时间,所述读取单元还用于,停止运行所述SparkStreaming。
可选的,所述Spark Streaming中包括多个Receiver,所述读取单元,还用于,通过所述多个Receiver从所述指定内存中并行读取所述数据。
本领域内的技术人员应明白,本发明的实施例可提供为方法、***、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种基于Spark Streaming读取RabbitMQ数据的方法,其特征在于,包括:
通过RabbitMQ的接收器Receiver读取所述RabbitMQ中的数据,并将所述数据存储在指定内存中;其中,在所述RabbitMQ的receiver中预先设置有停止读取所述RabbitMQ中数据并存到内存中的时间,在所述Spark Streaming中预先设置停止运行的时间,且停止从所述RabbitMQ中读取数据并存到指定内存中的时间早于所述Spark Streaming停止运行的时间;
通过Spark Streaming的Receiver从所述指定内存中读取所述数据,并对所述数据进行批处理。
2.如权利要求1所述的方法,其特征在于,所述通过RabbitMQ的Receiver读取所述RabbitMQ中的数据,具体包括:
确定所述RabbitMQ的receiver读取所述RabbitMQ中的数据的时间节点是否到达预先设置的所述RabbitMQ的Receiver停止读取所述RabbitMQ中的数据的第一时间;
若未到达所述第一时间,则通过所述RabbitMQ的receiver读取所述RabbitMQ中的数据。
3.如权利要求2所述的方法,其特征在于,所述通过Spark Streaming的receiver从所述指定内存中读取所述数据,还包括:
启动所述Spark Streaming;
确定所述Spark Streaming的Receiver从所述指定内存中读取所述数据的时间节点是否到达预先设置的所述Spark Streaming停止运行的第二时间,其中,所述第二时间晚于所述第一时间;
若未到达所述第二时间,则通过Spark Streaming的Receiver从所述指定内存中读取所述数据。
4.如权利要求3所述的方法,其特征在于,若确定所述RabbitMQ的Receiver读取所述RabbitMQ中的数据的时间节点到达所述第一时间时,所述方法还包括:确定所述RabbitMQ的Receiver停止从所述RabbitMQ中读取数据;
若确定所述Spark Streaming的Receiver从所述指定内存中读取所述数据的时间节点到达所述第二时间,所述方法还包括:停止运行所述Spark Streaming。
5.如权利要求1-4中任一项所述的方法,其特征在于,所述Spark Streaming中包括多个Receiver,所述通过Spark Streaming的Receiver从所述指定内存中读取所述数据,具体为:
通过所述Spark Streaming的多个Receiver从所述指定内存中并行读取所述数据。
6.一种基于Spark Streaming读取RabbitMQ数据的装置,其特征在于,所述装置包括:
存储单元,用于通过RabbitMQ的接收器Receiver读取所述RabbitMQ中的数据,并将所述数据存储在指定内存中;其中,在所述RabbitMQ的receiver中预先设置有停止读取所述RabbitMQ中数据并存到内存中的时间,在所述Spark Streaming中预先设置停止运行的时间,且停止从所述RabbitMQ中读取数据并存到指定内存中的时间早于所述SparkStreaming停止运行的时间;
读取单元,用于通过Spark Streaming的Receiver从所述指定内存中读取所述数据,并对所述数据进行批处理。
7.如权利要求6所述的装置,其特征在于,所述存储单元,还用于:
确定所述RabbitMQ的receiver读取所述RabbitMQ中的数据的时间节点是否到达预先设置的所述RabbitMQ的Receiver停止读取所述RabbitMQ中的数据的第一时间;
若未到达所述第一时间,则通过所述RabbitMQ的receiver读取所述RabbitMQ中的数据。
8.如权利要求7所述的装置,其特征在于,所述读取单元,还用于:
启动所述Spark Streaming;
确定所述Spark Streaming的Receiver从所述指定内存中读取所述数据的时间节点是否到达预先设置的所述Spark Streaming停止运行的第二时间,其中,所述第二时间晚于所述第一时间;
若未到达所述第二时间,则通过Spark Streaming的Receiver从所述指定内存中读取所述数据。
9.如权利要求8所述的装置,其特征在于,若确定所述RabbitMQ的Receiver读取所述RabbitMQ中的数据的时间节点到达所述第一时间时,所述存储单元还用于,确定所述RabbitMQ的Receiver停止从所述RabbitMQ中读取数据;
若确定所述Spark Streaming的Receiver从所述指定内存中读取所述数据的时间节点到达所述第二时间,所述读取单元还用于,停止运行所述Spark Streaming。
10.如权利要求6-9中任一项所述的装置,其特征在于,所述Spark Streaming中包括多个Receiver,所述读取单元,还用于,通过所述多个Receiver从所述指定内存中并行读取所述数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811311846.1A CN111143082B (zh) | 2018-11-06 | 2018-11-06 | 读取RabbitMQ数据的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811311846.1A CN111143082B (zh) | 2018-11-06 | 2018-11-06 | 读取RabbitMQ数据的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111143082A CN111143082A (zh) | 2020-05-12 |
CN111143082B true CN111143082B (zh) | 2023-05-16 |
Family
ID=70516120
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811311846.1A Active CN111143082B (zh) | 2018-11-06 | 2018-11-06 | 读取RabbitMQ数据的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111143082B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107402956A (zh) * | 2017-06-07 | 2017-11-28 | 网易(杭州)网络有限公司 | 大任务的数据处理方法、设备和计算机可读存储介质 |
CN107766214A (zh) * | 2017-10-12 | 2018-03-06 | 南京熊猫电子股份有限公司 | 基于spark技术的移动终端数据流处理方法及*** |
CN108683612A (zh) * | 2018-05-22 | 2018-10-19 | 阿里巴巴集团控股有限公司 | 一种消息获取方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10289973B2 (en) * | 2015-04-10 | 2019-05-14 | Telefonaktiebolaget Lm Ericsson (Publ) | System and method for analytics-driven SLA management and insight generation in clouds |
-
2018
- 2018-11-06 CN CN201811311846.1A patent/CN111143082B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107402956A (zh) * | 2017-06-07 | 2017-11-28 | 网易(杭州)网络有限公司 | 大任务的数据处理方法、设备和计算机可读存储介质 |
CN107766214A (zh) * | 2017-10-12 | 2018-03-06 | 南京熊猫电子股份有限公司 | 基于spark技术的移动终端数据流处理方法及*** |
CN108683612A (zh) * | 2018-05-22 | 2018-10-19 | 阿里巴巴集团控股有限公司 | 一种消息获取方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN111143082A (zh) | 2020-05-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11188380B2 (en) | Method and apparatus for processing task in smart device | |
CN109523187B (zh) | 任务调度方法、装置和设备 | |
CN110750592B (zh) | 数据同步的方法、装置和终端设备 | |
US20150120852A1 (en) | Subscriber based priority of messages in a publisher-subscriber domain | |
CN109829164B (zh) | 用于生成文本的方法和装置 | |
CN112988362A (zh) | 一种任务处理方法、装置、电子设备及存储介质 | |
CN107133160B (zh) | 服务器和客户端 | |
US10789183B2 (en) | Aggregation handling | |
CN113127225A (zh) | 一种数据处理任务的调度方法、装置和*** | |
US20230114682A1 (en) | Service chain instance pool sizing | |
US8510426B2 (en) | Communication and coordination between web services in a cloud-based computing environment | |
CN109684051A (zh) | 一种混合式大数据任务异步提交的方法和*** | |
CN111143082B (zh) | 读取RabbitMQ数据的方法及装置 | |
CN112667368B (zh) | 一种任务数据处理方法和装置 | |
US20230289739A1 (en) | Publicizing meeting schedule overruns to consecutive meeting attendees | |
JP2018538632A (ja) | ノードの再起動後にデータを処理する方法及びデバイス | |
CN114548448A (zh) | 一种运维服务管理方法、装置及*** | |
CN110968334B (zh) | 应用资源更新方法、资源包制作方法、装置、介质及设备 | |
CN112671816B (zh) | 一种文件下载方法、装置、设备及介质 | |
CN112860447B (zh) | 一种不同应用间的交互方法和*** | |
US11095753B2 (en) | Dynamic initiation of services | |
CN109871226B (zh) | 下载器的配置方法、装置、介质及电子设备 | |
CN111950232B (zh) | 一种自动切换号段的方法和装置 | |
CN113449891A (zh) | 基于区块链的网点排队办理方法及装置 | |
CN112445597A (zh) | 定时任务调度方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |