第18课:Spark Streaming中空RDD处理及流处理程序优雅的停止

原创 2016年06月01日 19:26:34

第18课:Spark Streaming中空RDD处理及流处理程序优雅的停止
/* 王家林老师授课http://weibo.com/ilovepains  每天晚上20:00YY频道现场授课频道 68917580*/
1 Spark Streaming中空RDD的处理
2 Spark Streaming程序优雅的停止

 


跟51cto和csdn课堂合作,最最重要的是如何贡献社会,祝福每个人拥有美好的人生。
机器学习在spark 2.x基础上授课。

空RDD没做什么事情又要消耗计算资源cpu cores,虽然什么都干,这个必须进行处理。
判断RDD有没有元素。
1、if(rdd.count()){} //不好的地方,count会触发一个job,不要这个方式。
2、if (!rdd.isEmpty){}// 目前有效的方式
3、if (rdd.partitions.isEmpty) 
4、if(rdd.partitions > 0){
   rdd.partitions.map(_)
  
   //rdd.iterator //这个在executor中执行的,现在我们在driver中,无法使用的
   }
5、rdd.partitions.isEmpty //这个不太对 ,不行的

 

 

/**
 * An RDD that has no partitions and no elements.
 */
private[spark] class EmptyRDD[T: ClassTag](sc: SparkContext) extends RDD[T](sc, Nil) {

  override def getPartitions: Array[Partition] = Array.empty

  override def compute(split: Partition, context: TaskContext): Iterator[T] = {
    throw new UnsupportedOperationException("empty RDD")
  }
}

  


  课外资料

http://stackoverflow.com/questions/28454357/spark-efficient-way-to-test-if-an-rdd-is-empty

 

def time(n : Long, f : (RDD[Long]) => Boolean): Unit = {
  val start = System.currentTimeMillis()
  val rdd = sc.parallelize(1L to n, numSlices = 100)
  val result = f(rdd)
  printf("Time: " + (System.currentTimeMillis() - start) + "   Result: " + result)
}

time(1000000000L, rdd => rdd.take(1).length == 0L)
time(1000000000L, rdd => rdd.mapPartitions(it => Iterator(!it.hasNext)).reduce(_&&_))
time(1000000000L, rdd => rdd.count() == 0L)
time(1000000000L, rdd => rdd.takeSample(true, 1).isEmpty)
time(1000000000L, rdd => rdd.fold(0)(_ + _) == 0L)

time(1L, rdd => rdd.take(1).length == 0L)
time(1L, rdd => rdd.mapPartitions(it => Iterator(!it.hasNext)).reduce(_&&_))
time(1L, rdd => rdd.count() == 0L)
time(1L, rdd => rdd.takeSample(true, 1).isEmpty)
time(1L, rdd => rdd.fold(0)(_ + _) == 0L)

time(0L, rdd => rdd.take(1).length == 0L)
time(0L, rdd => rdd.mapPartitions(it => Iterator(!it.hasNext)).reduce(_&&_))
time(0L, rdd => rdd.count() == 0L)
time(0L, rdd => rdd.takeSample(true, 1).isEmpty)
time(0L, rdd => rdd.fold(0)(_ + _) == 0L)

 

 

 

 

On my local machine with 3 worker cores I got these results

Time:    21   Result: false
Time:    75   Result: false
Time:  8664   Result: false
Time: 18266   Result: false
Time: 23836   Result: false

Time:   113   Result: false
Time:   101   Result: false
Time:    68   Result: false
Time:   221   Result: false
Time:    46   Result: false

Time:    79   Result: true
Time:    93   Result: true
Time:    79   Result: true
Time:   100   Result: true
Time:    64   Result: true

 

版权声明:本文根据家林大神Spark系列课程整理编写,未经博主允许不得转载,转载请标注本博客URL。

Spark修炼之道(进阶篇)——Spark入门到精通:第十节 Spark Streaming(一)

本节主要内容本节部分内容来自官方文档:http://spark.apache.org/docs/latest/streaming-programming-guide.html#mllib-operat...

第18课:Spark Streaming中空RDD处理及流处理程序优雅的停止

1.SparkStreaming中空RDD处理 JobGenerator /** Generate jobsand perform checkpoint for the given `time`...

spark JVM调优之原理概述以及降低cache操作的内存占比

每一次放对象的时候,都是放入eden区域,和其中一个survivor区域;另外一个survivor区域是空闲的。 当eden区域和一个survivor区域放满了以后(spark运行过程中,产...

Spark技术内幕:Shuffle的性能调优

通过上面的架构和源码实现的分析,不难得出Shuffle是Spark Core比较复杂的模块的结论。它也是非常影响性能的操作之一。因此,在这里整理了会影响Shuffle性能的各项配置。尽管大部分的配置项...

Spark定制班第18课:Spark Streaming中空RDD处理及流处理程序优雅的停止

本期内容: 1 Spark Streaming中的空RDD处理 2 Spark Streaming程序的停止 1 Spark Streaming中的空RDD处理      ...

Spark 定制版:018~Spark Streaming中空RDD处理及流处理程序优雅的停止

本讲内容:a. Spark Streaming中的空RDD处理 b. Spark Streaming程序的停止注:本讲内容基于Spark 1.6.1版本(在2016年5月来说是Spark最新版本)...

谈谈如何优雅的关闭正在运行中的Spark Streaming的流程序

前面的文章,已经简单提到过怎么样关闭流程序。因为Spark Streaming流程序比较特殊,所以不能直接执行kill -9 这种暴力方式停掉,如果使用这种方式停程序,那么就有可能丢失数据或者重复消费...

【Spark】RDD处理程序运行原理解释和它的Transformation和Actions操作详解

【Spark】RDD处理程序运行原理解释和它的Transformation和Actions操作详解 (1) Spark 程序运行运行原理解释: 下图描述了Spark的输入、 运行转换、 输出。 在运...

程序优雅的退出 处理unhandler exception_不提示错误框

程序是由代码编译出来的,而代码是由人写的。人非圣贤,孰能无过。所以由人写的代码有缺陷是很正常的。当然很多异常都在开发阶段被考虑到而添加了处理代码,或者用try/catch对可能出现异常的地方进行额外的...

如何优雅地终止正在运行的Spark Streaming程序

转载原文地址:可以点击:https://www.iteblog.com/archives/1890.html进入原文阅读。   一直运行的Spark Streaming程序如...
  • nysyxxg
  • nysyxxg
  • 2017年03月08日 11:02
  • 1381
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:第18课:Spark Streaming中空RDD处理及流处理程序优雅的停止
举报原因:
原因补充:

(最多只允许输入30个字)