CN112559227A - 一种基于Spark Streaming的动态更新共享数据方法 - Google Patents
一种基于Spark Streaming的动态更新共享数据方法 Download PDFInfo
- Publication number
- CN112559227A CN112559227A CN202110043173.1A CN202110043173A CN112559227A CN 112559227 A CN112559227 A CN 112559227A CN 202110043173 A CN202110043173 A CN 202110043173A CN 112559227 A CN112559227 A CN 112559227A
- Authority
- CN
- China
- Prior art keywords
- data
- broadcast
- program
- streaming
- spark
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 38
- 238000012545 processing Methods 0.000 claims description 35
- 238000004519 manufacturing process Methods 0.000 description 3
- 230000007547 defect Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24568—Data stream processing; Continuous queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/656—Updates while running
-
- 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
- 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/547—Remote procedure calls [RPC]; Web services
- G06F9/548—Object oriented; Remote method invocation [RMI]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
本发明公开了一种基于Spark Streaming的动态更新共享数据方法,就Spark而言,大变量都会由Driver端来进行分发,这个大变量如果不是广播变量,那每一个task就会分发一份出来,这在task数目在十分多的情况下Driver端的带宽就会成为***瓶颈,而且还会大量消耗task服务器的资源,我们如果将这个变量声明为广播变量,那么每个executor都会拥有一份,这个executor启动的task会共享变量,节省了通信的成本和服务器的资源。而在更需要资源的Spark Streaming中,广播变量无非是将大变量传递给executor端最好的选择,但是流式程序启动之后无法在进行更新广播变量,优势在于,不需要重启程序则完成动态的更新,解决生产线上需要重启的弊端。
Description
技术领域
本发明属于流式数据处理领域,涉及大数据下一种基于Spark Streaming动态更新共享数据的方法。
背景技术
随着大数据技术发展的广泛流行,目前大数据流式处理中Spark Streaming程序启动后,将不能在更改程序的配置,除非要Kill掉程序,重启程序,这对生产模式流式程序是及其不友好的,但是往往环境需求外部变量,而且还是需要更新的,这时候就会用动态更新方式让程序在正常运行情况下解决现有问题。
发明内容
本发明要解决的技术问题是,提供一种不需要重启程序则完成动态的更新,解决生产线上需要重启的基于Spark Streaming动态更新共享数据的方法。
本发明的技术方案是:一种基于Spark Streaming动态更新共享数据的方法,包括以下步骤:
步骤1,数据将从kafka等消息中间件保存,流式处理Spark Streaming消费kafka的topic;数据指的是任何业务数据,包括埋点采集,后台生成,日志等;
步骤2,消费topic数据同时要对数据进行简单处理落地,处理的同时需要外部变量更新,首先创建广播对象,程序执行会把广播变量的赋值传送给executor端;
步骤3,当需要更换变量的时候,就需要替换广播对象的赋值,这时,需要在程序foreachRdd中定义一个更新装置去执行,相当于一个定时器理念;使用单例模式,会减少Spark流式程序中每次job生成,频繁创建广播带来的不必要开销;
步骤4,准备好需求的数据变量,更新装置启动,把数据加载到广播对象中,随着下一次批处理时间的开始,程序执行,刷新广播对象的值;自此,完成了不重启的情况下,完成广播变量更新。
具体地,所述步骤1中,流式处理指的为SparkStreaming的流式处理,SparkStreaming处理方式为批处理方式,用户可以为SparkStreaming进行批处理时间设置,即设置多久处理一次数据。
具体地,所述步骤2中,广播变量的赋值对象是进行广播的对象数据,是在外部额外生成的,当sparkStreaming的程序启动后,广播对象创建,程序会拉取生成好的数据写入对象中;这个外部数据的作用主要是为了关联sparkstreaming消费kafka中的数据。
具体地,所述步骤3中更新装置指调用此方法去进行广播的对象数据更换,因为广播对象数据有时间限制要求;方法的设定为批处理过程中满足方法调用,则进入方法;内部调用获取外部数据方法,拿到数据后,再封装成广播对象返回;定时器则为每一次批处理过程中,判断当前时间是否满足自己所需要更换数据时间,如满足则进入,不满足退出。
具体地,所述步骤3中用到单例是因为广播对象是只读的,主要使用过程为更换外部数据时创建广播时会生成对象,而程序频繁的创建对象则会有大量的没有必要的开销,所以创建时候使用单例模式创建。
与现有技术比较,本发明的有益效果是:本发明以解决现有技术中对更新动态的大变量需要重启的弊端,实现对应用场景有实时ETL日志***服务,因格式,字段发生变化保证能正常解析运行;实时的NLP,动态更新新词和停用词;实时风控***,动态更新触发警告规则;变量周期更换等。
附图说明
图1是本发明实施方式的流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
如图1所示,一种基于Spark Streaming动态更新共享数据的方法,包括以下步骤:
步骤1,数据将从kafka等消息中间件保存,流式处理Spark Streaming消费kafka的topic;数据指的是任何业务数据,包括埋点采集,后台生成,日志等;流式处理指的为SparkStreaming的流式处理,SparkStreaming处理方式为批处理方式,用户可以为SparkStreaming进行批处理时间设置,即设置多久处理一次数据。
步骤2,消费topic数据同时要对数据进行简单处理落地,处理的同时需要外部变量更新,首先创建广播对象,程序执行会把广播变量的赋值传送给executor端;广播变量的赋值对象是进行广播的对象数据,是在外部额外生成的,当sparkStreaming的程序启动后,广播对象创建,程序会拉取生成好的数据写入对象中;这个外部数据的作用主要是为了关联sparkstreaming消费kafka中的数据。
步骤3,当需要更换变量的时候,就需要替换广播对象的赋值,这时,需要在程序foreachRdd中定义一个更新装置去执行,相当于一个定时器理念;使用单例模式,会减少Spark流式程序中每次job生成,频繁创建广播带来的不必要开销;更新装置指调用此方法去进行广播的对象数据更换,因为广播对象数据有时间限制要求;方法的设定为批处理过程中满足方法调用,则进入方法;内部调用获取外部数据方法,拿到数据后,再封装成广播对象返回;定时器则为每一次批处理过程中,判断当前时间是否满足自己所需要更换数据时间,如满足则进入,不满足退出。用到单例是因为广播对象是只读的,主要使用过程为更换外部数据时创建广播时会生成对象,而程序频繁的创建对象则会有大量的没有必要的开销,所以创建时候使用单例模式创建。
步骤4,准备好需求的数据变量,更新装置启动,把数据加载到广播对象中,随着下一次批处理时间的开始,程序执行,刷新广播对象的值;自此,完成了不重启的情况下,完成广播变量更新。
一种基于Spark Streaming的动态更新共享数据方法,就Spark 而言,大变量都会由Driver端来进行分发,这个大变量如果不是广播变量,那每一个task就会分发一份出来,这在task数目在十分多的情况下Driver端的带宽就会成为***瓶颈,而且还会大量消耗task服务器的资源,我们如果将这个变量声明为广播变量,那么每个executor都会拥有一份,这个executor启动的task会共享变量,节省了通信的成本和服务器的资源。而在更需要资源的Spark Streaming中,广播变量无非是将大变量传递给executor端最好的选择,但是流式程序启动之后无法在进行更新广播变量,此方法将阐述对广播变量进行动态更新的方法,程序启动之后,将会获取广播变量的值,而当广播变量数据不满足需求时,则去更换变量值。优势在于,不需要重启程序则完成动态的更新,解决生产线上需要重启的弊端。
以上公开的本发明优选实施例只是用于帮助阐述本发明。优选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书的内容,可作很多的修改和变化。本说明书选取并具体描述实施例,是为了更好地解释本发明的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本发明。
Claims (5)
1.一种基于Spark Streaming动态更新共享数据的方法,其特征在于,包括以下步骤:
步骤1,数据将从kafka等消息中间件保存,流式处理Spark Streaming消费kafka的topic;
步骤2,消费topic数据同时要对数据进行简单处理落地,处理的同时需要外部变量更新,首先创建广播对象,程序执行会把广播变量的赋值传送给executor端;
步骤3,当需要更换变量的时候,就需要替换广播对象的赋值,这时,需要在程序foreachRdd中定义一个更新装置去执行,相当于一个定时器理念;使用单例模式,会减少Spark流式程序中每次job生成,频繁创建广播带来的不必要开销;
步骤4,准备好需求的数据变量,更新装置启动,把数据加载到广播对象中,随着下一次批处理时间的开始,程序执行,刷新广播对象的值;自此,完成了不重启的情况下,完成广播变量更新。
2.根据权利要求1所述的一种基于Spark Streaming动态更新共享数据的方法,其特征在于:所述步骤1中,流式处理指的为SparkStreaming的流式处理,SparkStreaming处理方式为批处理方式,用户可以为SparkStreaming进行批处理时间设置,即设置多久处理一次数据。
3.根据权利要求1所述的一种基于Spark Streaming动态更新共享数据的方法,其特征在于:所述步骤2中,广播变量的赋值对象是进行广播的对象数据,是在外部额外生成的,当sparkStreaming的程序启动后,广播对象创建,程序会拉取生成好的数据写入对象中;这个外部数据的作用主要是为了关联sparkstreaming消费kafka中的数据。
4.根据权利要求1所述的一种基于Spark Streaming动态更新共享数据的方法,其特征在于:所述步骤3中更新装置指调用此方法去进行广播的对象数据更换,因为广播对象数据有时间限制要求;方法的设定为批处理过程中满足方法调用,则进入方法;内部调用获取外部数据方法,拿到数据后,再封装成广播对象返回;定时器则为每一次批处理过程中,判断当前时间是否满足自己所需要更换数据时间,如满足则进入,不满足退出。
5.根据权利要求1所述的一种基于Spark Streaming动态更新共享数据的方法,其特征在于:所述步骤3中用到单例是因为广播对象是只读的,主要使用过程为更换外部数据时创建广播时会生成对象,而程序频繁的创建对象则会有大量的没有必要的开销,所以创建时候使用单例模式创建。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110043173.1A CN112559227A (zh) | 2021-01-13 | 2021-01-13 | 一种基于Spark Streaming的动态更新共享数据方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110043173.1A CN112559227A (zh) | 2021-01-13 | 2021-01-13 | 一种基于Spark Streaming的动态更新共享数据方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112559227A true CN112559227A (zh) | 2021-03-26 |
Family
ID=75035511
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110043173.1A Pending CN112559227A (zh) | 2021-01-13 | 2021-01-13 | 一种基于Spark Streaming的动态更新共享数据方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112559227A (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8036965B1 (en) * | 2007-03-26 | 2011-10-11 | Trading Technologies International, Inc. | Distribution of electronic market data |
CN108255628A (zh) * | 2016-12-29 | 2018-07-06 | 北京国双科技有限公司 | 一种数据处理方法及装置 |
-
2021
- 2021-01-13 CN CN202110043173.1A patent/CN112559227A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8036965B1 (en) * | 2007-03-26 | 2011-10-11 | Trading Technologies International, Inc. | Distribution of electronic market data |
CN108255628A (zh) * | 2016-12-29 | 2018-07-06 | 北京国双科技有限公司 | 一种数据处理方法及装置 |
Non-Patent Citations (2)
Title |
---|
THROWS-EXCEPTION: "SparkStreaming——SparkStreaming集成Kafka 读写kafka topic", pages 1 - 7, Retrieved from the Internet <URL:CSDN博客,https://blog.csdn.net/Shemon_zjw/article/details/108275696> * |
灵佑666: "Spark中广播变量详解以及如何动态更新广播变量", pages 1 - 5, Retrieved from the Internet <URL:CSDN博客, https://blog.csdn.net/onway_goahead/article/details/104191932> * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110908788B (zh) | 基于Spark Streaming的数据处理方法、装置、计算机设备及存储介质 | |
CN106909411A (zh) | 一种文件更新方法及装置 | |
CN108334367A (zh) | 一种面向bmc芯片的固件远程升级***及方法 | |
CN112165413B (zh) | 设备状态上报方法及装置、电子装置 | |
CN110673640A (zh) | 一种无人机控制方法、装置、设备和存储介质 | |
CN108762919A (zh) | 一种程序内存处理***及方法 | |
CN109816453B (zh) | 一种推广资源链接的检测方法及装置 | |
CN106162577A (zh) | 一种消息推送方法,及消息推送设备 | |
CN112559227A (zh) | 一种基于Spark Streaming的动态更新共享数据方法 | |
CN104731683A (zh) | 一种手机内存监控的方法及*** | |
CN108509230B (zh) | 高精细智能灰度发布*** | |
CN109005465B (zh) | 弹幕消息分发方法、装置、设备及存储介质 | |
CN112100203A (zh) | 一种控制方法、装置、家电设备及存储介质 | |
CN109189462A (zh) | 一种具有自动升级功能的触控*** | |
CN104468505A (zh) | 一种安全审计日志播放方法及装置 | |
CN105389202A (zh) | 处理应用程序响应的方法及*** | |
CN108494951A (zh) | 未读数据获取方法、装置、设备及存储介质 | |
CN108683612B (zh) | 一种消息获取方法和装置 | |
CN109358890A (zh) | 主控设备对4g模组的固件更新方法、行车记录仪 | |
CN114546631A (zh) | 任务调度方法、控制方法、核心、电子设备、可读介质 | |
CN115328496A (zh) | 一种文件生成方法及装置 | |
CN115167351A (zh) | 一种控制器功能更新方法、***、车辆和服务器 | |
CN113133027B (zh) | 一种通信方法、服务器、终端及通信*** | |
CN113590626A (zh) | 隧道掘进装备多源异构数据采集***及方法 | |
KR20220086245A (ko) | 차량용 운영체제의 태스크 실행 시스템 및 방법 |
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 |