天天看点

spark流数据处理批数据处理与流数据处理

spark 流媒体处理

  • 批数据处理与流数据处理
    • 批数据
    • 流处理
    • Spark Streaming
    • 结构化流数据处理

批数据处理与流数据处理

如果我们把数据看作是一个巨大的海洋,我们可以把批数据当做一桶水,只不过桶有着不同的大小,对应的数据也有着不同的数据集大小。而流数据可以当做是一条水管,不断地从海洋中抽取数据。

批数据

顾名思义,批数据是指在一段时间内组合在一起的一组记录,用于后续的处理和分析。因为这些记录是在一段时间内收集的,按照大小来看,批数据通常比流数据要更大(但在某些情况下,流数据也是大于批数据大小的),并通常用于后续的数据分析、数据挖掘。旧式的系统、SQL数据库和所有的大型机都属于批处理数据的类别。与流数据相比最关键的区别在于,批处理数据一旦不尽快处理,它将成为早期批处理数据集的一部分。

流处理

流处理是指对记录的实时处理或接近实时的时间。工作人员不会等待时间段的结束,然后再去处理和分析这些数据。一旦它们可用或基于一个窗口周期,数据集的记录就会被逐个处理。因此,我们创建了一种包含记录的无限表,将流数据中的数据不断添加到表中。

spark流数据处理批数据处理与流数据处理

现如今,各企业为了保持它们的竞争优势,非常积极地使用各种来源的实时数据,如平台、设备、应用程序和系统日志。因此,流处理成为整个过程的关键组成部分。企业想要使用最新的数据,以产生有用的见解分析,可以帮助进行决策。批处理数据不能实时提供分析,因为他不能实时工作,而流数据处理可以更有效地提供解决方案。

Spark Streaming

在上一篇文章中,我们介绍了spark的核心架构。其中spark streaming是核心架构中不可缺少的组件之一。

spark流数据处理批数据处理与流数据处理

在spark早期的版本中提供了一个流数据处理的API(Dstream)。spark streaming是基于RDDs的(在dataframe和数据集之前,spark的一个抽象数据类),并且有着很少的限制。如下图所示,它能够从各种数据来源接收数据,如kafka、flume并将传入的数据进行转换,然后用spark engine进行处理。

spark流数据处理批数据处理与流数据处理
spark流数据处理批数据处理与流数据处理

虽然早期版本spark所提供的流数据处理组件是相当强大的,但还是有着以下的各项不足:

  1. 最核心的缺陷就是,对于批数据处理和流数据处理使用不同的APIs。将批数据转换为流数据需要进行大量的转换和变形。
  2. 它不能基于事件时间对批数据处理进行操纵,只能基于批处理时间。很难做到管理延迟到达的数据用于处理。
  3. 有限的容错能力。对于端到端一致数据的处理,没有任何容错能力

结构化流数据处理

spark中流数据组件的最新版本被称为结构化的流数据组件。相较于较早版本基于RDDs的spark流数据API而言,是一个巨大的改进。与之前相比的第一个重大变化就是,结构化流数据组件也为批数据处理提供了相同的API。因此,无论是静态有界的批数据,还是无限的流数据,他们的处理方式都是相似的。

spark流数据处理批数据处理与流数据处理

与早期版本另一个主要改进在于spark的结构。流数据处理构建在sparkSQL引擎的顶部,并且对于多个操作如聚合、过滤等都是使用的dataframe。它还提供了保证端到端的数据一致性。同时将结果写在输出位置。

spark流数据处理批数据处理与流数据处理

当数据到达的时间间隔为1时(基于窗口周期),输入数据框架到此为止的所有记录组成。下一步是在特定数据帧上执行查询(处理、转换、聚合、连接)。查询完成后,结果以便保存在相关的输出(控制台、内存、指定位置)中。

现在,在时间间隔为2时,新的数据到达,并添加到早期的数据帧中,形成一个较大的数据框架。再次重复上述查询操作,并将结果保存在选定的输出中。

这个过程对传入的数据流不断进行,每条记录都被附加到输入的数据框架中进行数据处理。

现在我们了解了流数据处理的基本过程,我们可以将流数据处理的核心部分为三个主要领域。

  1. 数据输入
    • 消息传递系统:

      Apache kafka、flume和logstash可以用来提取实时数据。因此很容易建成流数据管道的一部分。使用这些工具的想法是,当数据在源应用程序(应用程序、移动应用程序、物联网设备)中生成时,捕获所有的数据点,并传递给结构化流数据组件进一步处理,并以容错性和可扩展性的方式进行分析。

    • 文件夹/文件目录

      连续读取文件,作为流数据。文件可以是文本文件、Parquet或者是json格式。唯一的限制就是所有文件统一格式。

  2. 数据处理

    这是使用流、数据来创建业务价值的核心所在。可以对传入数据进行某些操作,以获得结果。 可以应用聚合、过滤、连接、排序等操作。

  3. 最终输出

    结构化流媒体为用户提供了多个选项来保存他们的输出结果,根据需要,它可以附加模式也可以选择完成模式。附加模式是指仅向最终输出中添加新结果表,而完成模式会更新了最终的整个结果表。