Spark Structured Streaming 和 DStreams 有什么区别?

What is the difference between Spark Structured Streaming and DStreams?

我一直在尝试在线查找材料 - 两者都是基于微批处理的 - 那么有什么区别?

直到 Spark 2.2,DStream[T] 是流数据的抽象数据类型,可以看作是 RDD[RDD[T]]。从 Spark 2.2 开始,DataSet 是对 DataFrame 既包含批处理(冷)数据又包含流数据。

来自文档

Discretized Streams (DStreams) Discretized Stream or DStream is the basic abstraction provided by Spark Streaming. It represents a continuous stream of data, either the input data stream received from source, or the processed data stream generated by transforming the input stream. Internally, a DStream is represented by a continuous series of RDDs, which is Spark’s abstraction of an immutable, distributed dataset (see Spark Programming Guide for more details). Each RDD in a DStream contains data from a certain interval, as shown in the following figure.

API using Datasets and DataFrames Since Spark 2.0, DataFrames and Datasets can represent static, bounded data, as well as streaming, unbounded data. Similar to static Datasets/DataFrames, you can use the common entry point SparkSession (Scala/Java/Python/R docs) to create streaming DataFrames/Datasets from streaming sources, and apply the same operations on them as static DataFrames/Datasets. If you are not familiar with Datasets/DataFrames, you are strongly advised to familiarize yourself with them using the DataFrame/Dataset Programming Guide.

关于 Spark Streaming(RDD/DStream) 和 Spark Structured Streaming(Dataset/DataFrame) 的简要说明

Spark Streaming 基于 DStream。 DStream 由一系列连续的 RDD 表示,它是 Spark 对 immutable、分布式数据集的抽象。 Spark Streaming存在以下问题。

困难 - 构建支持传输策略的流式管道并不简单:恰好一次保证,处理延迟或容错的数据到达。当然,他们都是实现者table,但他们需要程序员做一些额外的工作。

Incosistent - API 用于生成批处理(RDD,Dataset)与流处理(DStream)的 API 不同。当然,没有什么阻碍编码的,但它总是更简单(尤其是维护成本)来处理尽可能至少的抽象。

查看 example

Spark Streaming 流程图:-

Spark Structured Streaming 可以理解为无界的 table,随着新的传入数据而增长,即可以被认为是构建在 Spark SQL 上的流处理.

更具体地说,结构化流为 Spark 带来了一些新概念。

exactly-once 保证 - 结构化流式传输专注于该概念。这意味着数据只被处理一次并且输出不包含重复项。

事件时间 - 观察到的 DStream 流式处理问题之一是处理顺序,即较早生成的数据在较晚生成的数据之后处理的情况。结构化流式处理使用称为事件时间的概念来处理此问题,在某些情况下,该概念允许在处理管道中正确聚合延迟数据。

sink、Result Table、output mode 和 watermark 是 spark structured streaming 的其他特性。

查看 example

Spark Structured Streaming 流程图:-