StreamingContext:`
def this(sparkContext: sparkContext, batchDuration: Duration) ={
this(sparkContext, null, batchDuration)
}
def this(conf: SparkConf, batchDuration: Duration) ={
this(StreamingContext.createNewSparkContext(conf), null, batchDuration)
}
这里是StreamingContext源码
1.只要一个context启动了,就没办法再启动一个新的steaming computation
2.只要context被停止,就不能重新启动它了
3.一个jvm中只能有一个steamingcontext被运行在同一时间里
4.streaming的stop()能停止sparkcontext,如要只要停止streamingcontext则可以通过设置stopSparkContext为false
batch interval根据应用程序需求的延迟要求以及集群可用的资源情况来设置。
DStreams(Discretized Streams)
表示一系列的,持续不断的RDD,一个DStream包含多个RDD
在一定的间隔每个RDD都包含数据
对DStream操作算子,比如map/flatMap,底层会被翻译为对DStream中的每个RDD都做map/flatMap。
Input DStreams and Receivers
每一个input DStream都需要关联一个Receivers,用来接收并保存在spark内存中,进行处理,除了文件系统中的数据。
updataStateByKey算子
统计到目前为止累计出现的单词的个数(保持以往的状态)
window:定时的进行一个时间段内的数据处理
window length:窗口的长度
sliding interval:滑动间隔
这两个参数需要和我们的batch size成倍数关系
每隔多久计算某个范围内的数据:每隔10秒计算前10分钟的wc
===>每隔sliding interval统计前window length的值