Sun*_*yAk 8 apache-spark spark-streaming
我一直在尝试在线查找材料 - 两者都是基于微批次的 - 那么有什么区别?
Spark Streaming(RDD/DStream) 和 Spark Structured Streaming(Dataset/DataFrame) 简要说明
\n\nSpark Streaming基于DStream。DStream 由一系列连续的 RDD 表示,它是 Spark\xe2\x80\x99s 对不可变的分布式数据集的抽象。Spark Streaming存在以下问题。
\n\n困难 - 构建支持交付策略的流式管道并不简单:一次性保证、处理延迟到达的数据或容错。当然,所有这些都是可以实现的,但是它们需要程序员做一些额外的工作。
\n\n不一致 - 用于生成批处理(RDD、数据集)的 API 与流处理(DStream)的 API 不同。当然,对代码没有任何阻碍,但至少尽可能地处理抽象总是更简单(尤其是维护成本)。
\n\n看例子
\n\n\n\nSpark Structured Streaming可以理解为一个无界表,随着新传入的数据而增长,即可以被认为是构建在Spark SQL上的流处理。
\n\n更具体地说,结构化流为 Spark 带来了一些新概念。
\n\n一次性保证 - 结构化流媒体专注于这个概念。这意味着数据仅处理一次并且输出不包含重复项。
\n\n事件时间 - DStream 流处理观察到的问题之一是处理顺序,即先生成的数据在后生成的数据之后处理的情况。结构化流通过称为事件时间的概念来处理此问题,在某些情况下,该概念允许正确聚合处理管道中的后期数据。
\n\n接收器、结果表、输出模式和水印是 Spark 结构化流的其他功能。
\n\n看例子
\n\nSpark 结构化流流程图:-
\n\n\n在 Spark 2.2 之前, 是DStream[T]
流数据的抽象数据类型,可以将其视为 。RDD[RDD[T]]
从 Spark 2.2 开始, 是体现批处理(冷)数据和流数据的DataSet
抽象。DataFrame
来自文档
\n\n\n\n离散流 (DStream) 离散流或 DStream 是 Spark Streaming 提供的基本抽象。它表示连续的数据流,可以是从源接收的输入数据流,也可以是通过转换输入流生成的处理后的数据流。在内部,DStream 由一系列连续的 RDD 表示,这是 Spark\xe2\x80\x99 对不可变的分布式数据集的抽象\n(有关更多详细信息,请参阅 Spark 编程指南)。\n DStream 中的每个 RDD包含某个区间的数据,如下图所示。
\n\n使用数据集和数据帧的 API 自 Spark 2.0 起,数据帧和数据集可以表示静态、有界数据,以及流式、无界数据。与静态数据集/数据帧类似,您可以使用通用入口点 SparkSession(Scala/Java/Python/R 文档)从流源创建流数据帧/数据集,并对它们应用与静态相同的操作数据框/数据集。如果您不熟悉数据集/数据帧,强烈建议您使用数据帧/数据集编程指南来熟悉它们。
\n
归档时间: |
|
查看次数: |
8552 次 |
最近记录: |