Spark2.x学习笔记:18、Spark Streaming程序解读

18、Spark Streaming程序解读


18.1 Spark Streaming原理

Spark Streaming将流式计算转化为一批批很小的、确定的批处理作业(micro-batch)。以数秒为单位将数据流切分成离散的作业。每批数据看做RDD,可以使用RDD相关操作进行处理。最后结果以RDD为单位返回(写入HDFS或其他系统)。

18.2 DStream

DStream是连续数据的离散化表示,DStream中每个离散片段都是一个RDD,DStream可以变换成另一个DStream。

18.3 Spark Streaming程序模版

编写Spark Streaming程序流程如下:

  1. 流式上下文
  2. 流式数据输入
  3. 流式转换
  4. 流式数据输出
  5. 启动流式处理

比如Spark Streaming的样例程序NetworkWordCount可以非常明显地看出上面流程结构。

  //1. 流式上下文
  val sparkConf = new SparkConf().setAppName("NetworkWordCount")
  val ssc = new StreamingContext(sparkConf, Seconds(1))

  //2.流式数据输入
  val lines = ssc.socketTextStream("localhost", 9999)

  //3.流式转换    
  val words = lines.flatMap(_.split(" "))
  val wordCounts = words.map(x => (x, 1)).reduceByKey(_ + _)

  //4.流式输出
  wordCounts.print()

  //5.启动流式处理
  ssc.start()
  ssc.awaitTermination()

18.4 流式数据输入

(1)内置数据源(StreamingContext)

  • socketStream/rawSocketStream/socketTextStream
  • fileStream/textFileStream
  • receiverStream

(2)外部数据源

  • KafkaUtils:createStream/createDirectStream
  • FlumeUtils:createStream

18.5 流式转换

(1)一般的转换

  • map/flatMap/filter/reduce
  • groupByKey/reduceByKey/sortByKey,join
  • count

(2)特有转换

  • transform
  • window
  • mapWithState

灰常灰常感谢原博主的辛苦工作,为防止删博,所以转载,只供学习使用,不做其他任何商业用途。

https://blog.csdn.net/chengyuqiang/article/details/78473913

猜你喜欢

转载自blog.csdn.net/airufengye/article/details/81109827
今日推荐