reduceByKey(): 只计算当前Duration时间内的聚合
updateStateByKey() : 计算从streamingContext 启动开始到当前批次的聚合,当前批次之前的数据保存在内存+checkPoint 设置目录中,不设置checkPoint 会报错
如果Duration > 10s , 每隔Duration时间做一次checkPoint
如果Duration < 10s , 每隔10s时间做一次checkPoint,防止频繁访问checkPoint 目录
以下是reduceByKey updateStateByKey 使用代码
object SparkStreamingTest {
def main(args: Array[String]): Unit = {
//receiver模式下接受数据,local的模拟线程必须大于等于2,一个线程用来receiver用来接受数据,另一个线程用来执行job。
val conf = new SparkConf().setMaster("local[*]").setAppName("SparkStreamingTest")
//设置日志级别为ERROR
val sc = new SparkContext(conf)
sc.setLogLevel("ERROR")
//在创建streaminContext的时候 设置batch Interval
val ssc: StreamingContext = new StreamingContext(sc, Seconds(5))
//创建DStream
val dstream1: ReceiverInputDStream[String] = ssc.socketTe