本期内容:
1,Spark Streaming中的空RDD处理
2,Spark Streaming程序的停止
StreamingContext的stop方法,是立即停止,不会等待处理完已接收到的数据的。是否再调用stop方式时停止SparkContext可以通过spark.streaming.stopSparkContextByDefault这个参数来设置。
在stop方法中,调用scheduler的stop方法,判断是否停止SparkContext。
在JobScheduler的stop方法中,先调用receiverTracker的stop方法,再调用jobGenerator的stop方法,然后根据是否需要等待数据处理完,分别调用jobExecutor的awaitTermination方法,等待时间为2s或1h,最后调用listenerBus和eventLoop的stop方法。
在调用StreamingContext的start方法时,其实已经注册了构造函数stopOnShutdown。
在stopOnShutdown方法中,还会调用stop方法,其中可以配置spark.streaming.stopGracefullyOnShutdown来使得是否需要在停止Spark Streaming时处理完已接收到的数据。