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

《Spark2.x学习笔记》

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏个人分享

spark1.4加载mysql数据 创建Dataframe及join操作连接方法问题

最后无奈。。就用原来的方法 创建软连接,加载数据,发现可以。。这我就不明白了。。。

1072
来自专栏Spark学习技巧

必读|spark的重分区及排序

前几天,有人在星球里,问了一个有趣的算子,也即是RepartitionAndSortWithinPartitions。当时浪尖也在星球里讲了一下,整个关于分区排...

892
来自专栏牛肉圆粉不加葱

配置hadoop集群namenode的hostname千万不要包含下划线

在部署hadoop集群时,core-site.xml中的fs.defaultFS项的value不可包含下划线,否则会报以下错误

853
来自专栏大数据

Zzreal的大数据笔记-SparkDay05

Spark Streaming SparkStreaming部分没做知识点的笔记,直接从代码上理解它的用法。后面整理Storm的时候会与SparkStreami...

2116
来自专栏Albert陈凯

Spark详解02Job 逻辑执行图Job 逻辑执行图

Job 逻辑执行图 General logical plan ? GeneralLogicalPlan.png 典型的 Job 逻辑执行图如上所示,经过下面四个...

34811
来自专栏小樱的经验随笔

【BZOJ】初级水题列表——献给那些想要进军BZOJ的OIers(自用,怕荒废了最后的六月考试月,刷刷水题,水水更健康)

BZOJ初级水题列表——献给那些想要进军BZOJ的OIers 代码长度解释一切! 注:以下代码描述均为C++ RunID User Problem Res...

4209
来自专栏Spark学习技巧

RDD的join和Dstream的join有什么区别?

Dstream这个类实际上支持的只是Spark Streaming的基础操作算子,比如: map, filter 和window.PairDStreamFunc...

771
来自专栏牛肉圆粉不加葱

Spark Streaming Failed to read checkpoint from directory ...现象解决方案及原因

使用spark-submit提交一个Spark Streaming Application至yarn集群, 报错

902
来自专栏祝威廉

Spark Streaming 数据清理机制

为啥要了解机制呢?这就好比JVM的垃圾回收,虽然JVM的垃圾回收已经巨牛了,但是依然会遇到很多和它相关的case导致系统运行不正常。

1733
来自专栏张浩的专栏

Spark Streaming基于网络的词频统计

1391

扫码关注云+社区