Spark Streaming中空RDD处理及流处理程序优雅的停止
本期内容 :
- Spark Streaming中的空RDD处理
- Spark Streaming程序的停止
由于Spark Streaming的每个BatchDuration都会不断的产生RDD,空RDD有很大概率的,如何进行处理将影响其运行的效率、资源的有效使用。
Spark Streaming会不断的接收数据,在不清楚接收的数据处理到什么状态,如果你强制停止掉的话,会涉及到数据不完整操作或者一致性相关问题。
一、 Spark Streaming中的空RDD处理 :
ForEachRDD是产生Dstreams真正的Action操作的核心的方法(算子)。


数据写入数据库期间,当RDD为空时,如果也进行ForEachPartition及写数据库操作,或者数据保存在HDFS上等操作,此时虽然并没有做什么事情,也需要获取计算资源。

如何最大化的节约资源与提高效率呢?在处理之前增加判断:

都是上面对数据进行判断的方法还是不够理想,因为count操作会启动Job进行操作,还是会浪费资源,我们进行梳理以下方法:

如果在有若干个Partitions ,但是Partition的内容是空的话,take就可能启动Job :

假如没有数据的情况下会如何处理 :



数据为空时的操作 :


从上面可以观察到,会生成RDD ,但是RDD里面没有Partition ,没有数据的时候不会生成Block ,但是会生成RDD,不过里面一个Partition都没有而已。

有Partition但是如果没有BlockID也是不会执行的 :

总结:
其实也可以不生成RDD ,是因为需要维持一个概念,每个BachDuration都会产生一个Job,Job如果没有RDD的话就无法产生;
在每个时间间隔都会产生Job,如果提交的时候都没有Job,你的Action作用于什么呢,从表面上看不产生RDD有效率;
但是在调度层面的依赖是每个BatchDuration产生的Job,调度层面要判断是否有RDD,没有RDD作业将无法执行。
二、 Spark Streaming程序的停止 :
一般情况下Spark Streaming是采用什么方式停止呢?




以上的停止方式会把这个Streams停止掉,但是不会等待所有的数据处理完成默认情况下SparkContext也会被停止掉。
使用StopGraceFully方式处理 :



应用程序启动的时候会调用 StopOnShutdown ,会把回调传进去。

如果提示数据没有处理完成就被停止掉了:

总结:使用 StopGraceFully 所有接收的数据都会被处理完成,才会停止。
Spark Streaming中空RDD处理及流处理程序优雅的停止的更多相关文章
- Spark入门实战系列--7.Spark Streaming(上)--实时流计算Spark Streaming原理介绍
[注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .Spark Streaming简介 1.1 概述 Spark Streaming 是Spa ...
- .Spark Streaming(上)--实时流计算Spark Streaming原理介
Spark入门实战系列--7.Spark Streaming(上)--实时流计算Spark Streaming原理介绍 http://www.cnblogs.com/shishanyuan/p/474 ...
- Spark Streaming中空batches处理的两种方法(转)
原文链接:Spark Streaming中空batches处理的两种方法 Spark Streaming是近实时(near real time)的小批处理系统.对给定的时间间隔(interval),S ...
- IDEA Spark Streaming 操作(RDD队列流)
import org.apache.spark.SparkConf import org.apache.spark.rdd.RDD import org.apache.spark.streaming. ...
- Spark Streaming源码解读之流数据不断接收全生命周期彻底研究和思考
本期内容 : 数据接收架构设计模式 数据接收源码彻底研究 一.Spark Streaming数据接收设计模式 Spark Streaming接收数据也相似MVC架构: 1. Mode相当于Rece ...
- Spark入门实战系列--7.Spark Streaming(下)--实时流计算Spark Streaming实战
[注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .实例演示 1.1 流数据模拟器 1.1.1 流数据说明 在实例演示中模拟实际情况,需要源源 ...
- spark streaming之三 rdd,job的动态生成以及动态调度
前面一篇讲到了,DAG静态模板的生成.那么spark streaming会在每一个batch时间一到,就会根据DAG所形成的逻辑以及物理依赖链(dependencies)动态生成RDD以及由这些RDD ...
- 基于Kafka+Spark Streaming+HBase实时点击流案例
背景 Kafka实时记录从数据采集工具Flume或业务系统实时接口收集数据,并作为消息缓冲组件为上游实时计算框架提供可靠数据支撑,Spark 1.3版本后支持两种整合Kafka机制(Receiver- ...
- Spark Streaming源码解读之流数据不断接收和全生命周期彻底研究和思考
本节的主要内容: 一.数据接受架构和设计模式 二.接受数据的源码解读 Spark Streaming不断持续的接收数据,具有Receiver的Spark 应用程序的考虑. Receiver和Drive ...
随机推荐
- ubuntu 14.04安装 ruby on rails
安装完成ubuntu14.04以后 第一步: 1.sudo apt-get update 2.sudo apt-get upgrade 第二步: RVM 安装 $ gpg --keyserver ...
- LEETCODE —— Unique Paths II [动态规划 Dynamic Programming]
唯一路径问题II Unique Paths II Follow up for "Unique Paths": Now consider if some obstacles are ...
- [转]DB2 load参数
本文持续更新,LOAD如何提高parallelism.LOAD SHRLEVEL CHANGE的性能提高. =========================== Every once in a wh ...
- openjudge-最好的草
http://noi.openjudge.cn/ch0108/17/ 总时间限制: 10000ms 单个测试点时间限制: 1000ms 内存限制: 65536kB 描述 奶牛Bessie计划好好 ...
- Linux LVM硬盘管理之二:创建逻辑卷步骤
创建逻辑卷(LV)的顺序:Linux分区---物理卷(PV)---卷组(VG)---逻辑卷(LV)---挂载到文件系统 删除逻辑卷(LV)的顺序:卸载文件系统----逻辑卷(LV)---卷组(VG)- ...
- j技术方案
采用.net4.0作为基础技术平台,原来是采用.net4.5的,但是后来发现.net4.5不支持Windows Server2003,所以又降为.net4.0. 1.asp.net mvc 4.0 用 ...
- HackerRank "Fair Rations"
Another fun Greedy problem to work on: we simply go from first to second last person, as long someon ...
- JAVA NIO简介-- Buffer、Channel、Charset 、直接缓冲区、分散和聚集、文件锁
IO 是主存和外部设备 ( 硬盘.终端和网络等 ) 拷贝数据的过程. IO 是操作系统的底层功能实现,底层通过 I/O 指令进行完成. Java标准io回顾 在Java1.4之前的I/O系统中,提供 ...
- delphi怎么创建一个文本文件
//创建一个文本文件 procedure TFrmAutomatismBalance.FlatButton3Click(Sender: TObject); var TF:TextFile; Path ...
- java 命令notes
jps:查看本机的Java中进程信息. jstack:打印线程的栈信息,制作线程Dump. jmap:打印内存映射,制作堆Dump. jstat:性能监控工具. jhat:内存分析工具. jconso ...