流数据源
流数据用于许多行业。严格来说,实际上每一个数据都可以被认为是一个流。下面列出了一些最流行的用例:
- 物联网传感器数据。工业机械、消费电子产品、农业。
- 跟踪网站上的用户。在线商店、价格比较门户。
- 监控。系统健康状况、资源利用率、流量跟踪系统。
- 汽车行业。 车辆跟踪、路线信息。
- 金融交易。 欺诈检测、贸易监控和管理。
有界数据与无界数
有界数据是有限的并且具有离散的开始和结束。您可以将有界数据与批处理相关联。例如,每天收集公司的销售数据。然后每周、每月、甚至每年都会上传到数据库。运行分析以便获得数据洞察并通过批处理创建输出。
无界数据是无限的,没有离散的开始或结束。无界数据通常与流处理相关。例如,传感器不断收集有关温度、速度、位置等的现实数据。数据收集永远不会停止。这是一个24小时连续的过程。
我们将在本文中讨论无界数据和流处理。
什么是流处理?
流处理 结合了无限数据的收集、集成和分析。流处理连续提供无限的数据,而不是等待批处理作业在一天或一周结束时完成。
“流处理”和“批处理”的目的截然不同。批处理非常适合分析趋势,而流处理非常适合一次分析和处理一个事件。
想象一下您正在连接到某个数据流。数据作为永无休止的事件流自然到达。因此,处理是连续执行的,您无法控制数据何时到达。它只是在收集数据时发生。
数据正在高速传入。因此,通常情况下,流处理中的数据分析比批处理系统中的数据分析要简单得多,因为处理需要时间和资源。流处理的最高优先级是尽快处理数据。
数据流的特征
- 尽管可以从事件源获取大量数据,但数据记录通常很小。这是一些 JSON、CSV、XML 格式的结构化数据。通常,单个记录的大小不超过几千字节。我们不是在谈论兆字节或千兆字节。
- 数据量可能非常大。您可能会收到大量需要处理的消息到达系统。
- 数据分布不均匀。例如,您正在跟踪城市中移动的车辆。很可能,晚上系统上不会有太多负载,因为没有人开车。但在早上的高峰时段,巨大的山峰正等待着您。
- 与事件发生的时间相比,数据到达目的地的顺序 可能不正确。通常,数据是按顺序收集的。但在现实世界中,当数据通过网络或分布式消息代理传输时,与实际事件发生时相比,它最终可能会在消费者应用程序中乱序处理数据。因此,系统的设计必须能够正确处理这个问题。
在许多情况下,正如上面高峰时段的例子一样,实时数据对于决策的价值会随着时间的推移而减弱。
例如,您正在监控交通状况并希望看到经过的汽车。您处理这些数据的速度越快,您就越能部署这种时间紧迫的情况。您正在努力保持这条道路畅通以增加过往车辆的数量。随着时间的推移,你的反应能力会下降。反应和做出紧急决策的能力取决于收集数据的速度。
核心流处理工作流程概述
过滤在将数据保存到磁盘之前减少内存中的数据量。
让我们回到我们关于车辆监控的例子。想象一下在高峰时段有多少辆汽车到达道路上的某个地点。让数千辆汽车在一秒钟内通过是相当昂贵的。也许您只对特定类型的车辆(SUV 或卡车)感兴趣。您可以在工作流程中过滤此数据,然后将其提交到磁盘。另一个将按位置过滤。我们可能想收集整个国家的数据,但实际上,我们可能只对分析某些特定领域感兴趣。
组织通常只想从整个数据集中收集一种场景的数据集,因此过滤至关重要。
丰富:
数据丰富是指连接无限数据,并将第一方或第三方数据添加到数据集中,然后将其存储在磁盘上。
为什么您想要实时丰富数据而不是在仓库中丰富数据?
在高峰时段交通示例中,如果您实时丰富数据,则可以在活动期间立即做出正确的决策。假设您正在丰富仓库中的数据。在这种情况下,您可以在事件发生后对其进行丰富,或者您甚至可能需要执行复杂的位置和时间搜索来查明当时的情况,这是一个昂贵得多的选择。
当从传感器传输小块数据时,无需存储所有数据来做出明智的决策。在大多数情况下,存储中仅存储一定时间内多个传感器的平均值就足够了。