繁体   English   中英

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开始, DataSetDataFrame的抽象,它体现了批处理(冷)以及流数据。

来自文档

Discretized Streams(DStreams)Discretized Stream或DStream是Spark Streaming提供的基本抽象。 它表示连续的数据流,可以是从源接收的输入数据流,也可以是通过转换输入流生成的已处理数据流。 在内部,DStream由一系列连续的RDD表示,这是Spark对不可变分布式数据集的抽象(有关更多详细信息,请参阅Spark编程指南)。 DStream中的每个RDD都包含来自特定时间间隔的数据,如下图所示。

使用数据集和数据框架的API由于Spark 2.0,DataFrames和Datasets可以表示静态,有界数据以及流式无界数据。 与静态数据集/数据框类似,您可以使用公共入口点SparkSession(Scala / Java / Python / R docs)从流源创建流式DataFrames / Datasets,并对它们应用与静态DataFrames / Datasets相同的操作。 如果您不熟悉数据集/数据框架,强烈建议您使用“数据框架/数据集编程指南”熟悉它们。

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

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

困难 - 构建支持交付策略的流媒体管道并不简单:只需一次保证,处理数据迟到或容错。 当然,所有这些都是可实现的,但他们需要程序员的一些额外工作。

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

看到这个例子

Spark Streaming流程图: - Spark Streaming流程图

Spark Structured Streaming被理解为一个无限制的表,随着新的传入数据而增长,即可以被认为是基于Spark SQL构建的流处理。

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

完全一次保证 - 结构化流媒体专注于该概念。 这意味着数据只处理一次,输出不包含重复项。

事件时间 - 观察到的DStream流问题之一是处理顺序,即先前生成的数据在稍后生成的数据之后处理的情况。 结构化流处理这个问题的概念称为事件时间,在某些情况下,它允许在处理管道中正确地聚合后期数据。

接收器,结果表,输出模式和水印是火花结构流的其他功能。

看到这个例子

Spark Structured Streaming流程图: -

在此输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM