总论:SparkStreaming是一个流计算引擎,它会按照时间段来计算数据,比如每一秒钟计算一次数据,它是基于时间单位的,与内容无关
数据的来源:有很多,可以是日志数据,电商数据,app等,
架构:SparkStreaming 一般是和Kafka配合使用,熟悉Kafka的朋友都知道,Kafka是会把数据放到磁盘上的,所以当SparkStreaming与Kafka配合使用的时候就会本来把基于流的计算变成了基于磁盘的计算,即符合流式处理的需求,通过和Kafka配合还可以指定某一个时间段内的的数据的计算,如,计算半小时前的半个小时里面的数据
SparkStreaming是一个计算的框架,它会把你自己写的逻辑代码抓取过来,然后分析运行
SparkStreaming是基于RDD运行的嘛?
不是,因为流进来的数据是不断变化的,而RDD的数据却是不变的,但是Spark的核心就是RDD,也就是说Spark框架只认RDD,那么看来就是一个矛盾体了,所以如果业务逻辑写wordCount.print()是不会导致job的产生的,因为wordcount不是rdd的action,但是运行sparkStreaming的wordcount时候明显进行了计算,所以看出job的产生是基于框架来实现的,框架会定时每隔多长时间生成一个job,而job的产生是基于rdd的action,而我们写业务逻辑的时候写的是基于rdd的,所以说我们写的业务逻辑就是job的模板,模板会在特定的时空中产生一个实例,所以引出Dstream的概念,RDD的模板就是Dstream,Dstream里面是RDD,因为RDD之间有依赖关系,所以Dstream直接也有依赖关系
框架产生作业完全是由时间来决定的