"streaming" 在 Apache Spark 和 Apache Flink 中是什么意思?

What does "streaming" mean in Apache Spark and Apache Flink?

当我去Apache Spark Streaming网站时,我看到了一句话:

Spark Streaming makes it easy to build scalable fault-tolerant streaming applications.

而在Apache Flink网站中,有一句话:

Apache Flink is an open source platform for scalable batch and stream data processing.

streaming applicationbatch data processingstream data processing是什么意思?你能举一些具体的例子吗?它们是为传感器数据设计的吗?

流式数据分析(相对于"batch"数据分析)是指对典型的无限流进行连续分析数据项(通常称为事件)。

流媒体应用的特点

流数据处理应用程序通常具有以下几点特征:

  • 流式传输应用程序 运行 持续很长时间,并在事件出现时立即使用和处理它们。相比之下。批处理应用程序在文件或数据库中收集数据并稍后处理。

  • 流式应用程序经常关注结果的延迟。延迟是事件创建与分析应用程序考虑该事件之间的延迟。

  • 因为流是无限的,许多计算不能不涉及整个流,而是指流上的 "window"。 window 是流事件的子序列视图(例如最后 5 分钟)。现实世界 window 统计的一个例子是 "average stock price over the past 3 days".

  • 在流媒体应用程序中,事件的时间通常起着特殊的作用。根据事件的时间顺序来解释事件是很常见的。虽然某些批处理应用程序也可以这样做,但这不是那里的核心概念。

流媒体应用程序示例

流数据处理应用的典型例子有

  • 欺诈检测:应用程序试图确定交易是否符合之前观察到的行为。如果不是,则交易可能表明企图滥用。通常非常延迟关键的应用程序。

  • 异常检测:流式应用程序为其观察到的事件构建统计模型。离群值表示异常并可能触发警报。传感器数据可能是人们想要分析异常的事件来源之一。

  • 在线推荐:如果访问网上商店的用户没有很多过去的行为信息,那么在她浏览页面和浏览文章时从她的行为中学习是很有趣的,并且直接开始生成一些初步建议。

  • 最新数据仓库:有一些有趣的文章介绍了如何将数据仓库基础架构建模为流式应用程序,其中事件流是对数据库的更改序列,而流式应用程序将各种仓库计算为事件流的专用 "aggregate views"。

  • 还有很多...