文章目录
一、前言
二、Transformations on DStreams
三、 Window Operations(窗口操作)
四、Output Operations on DStreams(输出操作)
一、前言
Spark Streaming是核心Spark API的扩展,它支持对实时数据流进行可伸缩、高吞吐量和容错的流处理。数据可以从Kafka、Flume、Kinesis或TCP套接字等多个源获取,也可以使用map、reduce、join和window等高级函数表示的复杂算法进行处理。最后,可以将处理过的数据推送到文件系统、数据库和实时仪表板。事实上,您可以将Spark的机器学习和图形处理算法应用于数据流。
<dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-streaming_2.11</artifactId> <version>2.4.0</version> </dependency>
离散流或DStream是Spark Streaming提供的基本抽象。它表示连续的数据流,无论是从源接收的输入数据流,还是通过转换输入流生成的经过处理的数据流。在内部,DStream由一系列连续的RDDs表示,RDDs是Spark对不可变的分布式数据集的抽象。DStream中的每个RDD都包含来自某个时间间隔的数据。在内部,DStream表示为RDDs序列。
DStream中的算子分为两大类:Transformations 和Output
二、Transformations on DStreams
与RDDs类似,转换允许修改来自输入DStream的数据。DStreams支持普通Spark RDD上可用的许多转换。下面是一些常见的算子。
三、 Window Operations(窗口操作)
Spark Streaming还提供了窗口计算,允许你在滑动的数据窗口上应用转换。
如图所示:
每当窗口滑过源DStream时,属于该窗口的源RDDs就被组合起来并对其进行操作,从而生成窗口化DStream的RDDs。在这种特定的情况下,操作应用于最后3个时间单位的数据,并以2个时间单位进行幻灯片显示。这表明任何窗口操作都需要指定两个参数:
(1).窗口长度(windowLength)-窗口的持续时间(图中为3)。
(2).滑动间隔(slideInterval)——执行窗口操作的间隔(图中为2)。
这两个参数必须是批处理间隔的倍数.
一些常见的窗口操作如下所示。所有这些操作都使用上述两个参数——windowLength和slideInterval。
示例请参考官网:
http://spark.apache.org/docs/latest/streaming-programming-guide.html