在Apache Spark和Apache Flink中,“streaming”是什么意思?

10
当我访问Apache Spark Streaming网站时,看到了这样一句话:

Spark Streaming使得构建可扩展的容错流应用程序变得简单。

而在Apache Flink网站上,有这样一句话:

Apache Flink是一个可扩展的批处理和流数据处理开源平台。

什么是“流应用程序”、“批处理数据处理”和“流数据处理”?你能给出一些具体的例子吗?它们是为传感器数据设计的吗?

很可能,Google已经有了答案。 - maasg
嗨@maasg,实际上我已经谷歌过了。但是我仍然无法理解他们的意思。我认为,传感器数据也应该是流式传输的一部分。但我不明白为什么我需要"流式传输"这些东西。我可以使用任何机器学习库来分析数据。我想,要么有比我想象的更多,要么完全不同于我想象的那样。 - xirururu
2
流数据指的是无限制的数据流。批处理数据意味着有限的数据集。如果您想要持续接收和处理传感器数据,您需要一个流处理引擎。如果您有一些被捕获了一段时间的传感器数据,您应该选择批处理引擎。 - Fabian Hueske
嗨@FabianHueske,非常感谢您的回答!我还有一个问题,如果我有一个非常大的数据集,已经由传感器收集(我不会收到任何新数据)。分析数据集是否仍然需要使用flink或spark流? - xirururu
1
不需要。如果您的数据集大小固定,您可以(并且可能应该)使用批处理数据处理器。Apache Spark和Apache Flink都是用于批处理的好系统。 - Fabian Hueske
1个回答

15

流数据分析(与"批量"数据分析相比)指的是连续地分析通常为无限的数据项流(通常称为事件)。

流应用程序的特点

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

  • 流应用程序持续运行很长时间,并在事件出现时立即消耗和处理事件。相反,批处理应用程序在文件或数据库中收集数据,稍后再进行处理。

  • 流应用程序经常关注结果的延迟。延迟是从事件创建到分析应用程序考虑该事件的时间间隔。

  • 由于流是无限的,许多计算不能引用整个流,而是引用流的“窗口”。窗口是流事件子序列的视图(例如最近5分钟)。现实世界窗口统计的一个示例是“过去3天的平均股票价格”。

  • 在流应用程序中,事件的时间通常是特殊的角色。按时间顺序解释事件非常常见。虽然某些批处理应用程序也可以这样做,但那不是核心概念。

流应用程序的示例

流数据处理应用程序的典型示例包括

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

  • 异常检测:流处理应用程序建立事件的统计模型。离群值表示异常情况,并可能触发警报。传感器数据可能是要分析异常情况的事件源之一。

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

  • 最新的数据仓库技术:有些有趣的文章介绍如何将数据仓库基础架构建模为一个流式应用程序,其中事件流是数据库变更的序列,流式应用程序计算各种仓库作为事件流的专业化“聚合视图”。

  • 还有许多其他内容...


  • 点赞,只是一个快速的问题,股票市场价格和其他警报系统是否属于流处理类别?根据您的回答,它们确实具有无限数据,对吗? - PirateApp

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接