什么是流数据?
数据流是指生成和处理数据时形成持续不断的流。这是通过流处理技术实现的,实时管理、存储、分析数据流,然后执行操作。数据流也可以称为事件流处理或流数据(我们大多数人都很熟悉,这多亏了 Netflix)。
为了更好地理解流数据,最好从流媒体概念本身开始。流是指没有起点或终点的不间断数据流。这种持续流动的数据无需下载即可使用。它类似于河流。许多小溪、支流和水体以不同的速度和强度流动,汇成一条河流,从你的观点来看没有起点或终点。
同样,数据流源一系列来源,格式不一,容量不同。这些来源可以是应用程序、联网设备、服务器日志文件、各种在线活动以及基于位置的数据。所有这些数据源都可以实时收集,形成单一主要来源,用于实时分析和提供信息。
流媒体数据的一个示例是拼车应用程序。如果您在 Uber 或 Lyft 上预订,您将与司机实时配对,并且该应用程序将能够根据实时交通数据告诉您他离您有多远以及到达目的地需要多长时间。流数据的其他示例包括实时股票交易和零售库存管理。

流数据的工作原理
数据处理并非新概念。在早期,传统基础设施更容易结构化,因为数据来自更少的来源。整个结构可以按有利于数据和源结构特殊性和统一性的方式创建。
但是,现代数据来自无限的来源,这些来源可以是任何事物,包括硬件传感器、服务器、个人设备、应用程序和互联网浏览器。这就无法调节或强制执行数据结构,也无法控制生成的数据的强度和频率。
为了能够处理现代数据流,具有分析和处理数据流能力的应用程序必须按顺序一次分析和处理一个数据包。生成的每个数据包还需要带有源和时间戳,这有助于应用程序处理数据流。
用于处理数据流的应用程序需要两个主要功能:存储和处理。对于存储,它必须能够以一致的方式按顺序记录海量数据流。对于处理,软件应能够处理与存储的交互、存储数据的消耗、存储数据的分析以及对数据运行所需的计算。
构建数据流有几个考虑因素和挑战,如今,组织可以使用一系列平台和工具来帮助公司构建流数据基础架构。数据流在大数据中起着不可或缺的作用,为实时分析以及数据集成和数据获取提供了基础。
传统批处理与实时流有何不同
与早期传统批量数据处理方法相比,现代实时流可能大不相同。在传统的批处理中,数据是分批收集的,然后根据需要进行处理、存储或分析。在流数据中,数据输入流是连续的,并且是实时处理的。无需等待数据以批量形式到达。
如今,数据以恒定的流形式流动,并以不同的容量和格式出现,来自数十个地点、云端、本地甚至混合云。在当前情况下,传统的数据处理方法基本上已经过时了。如今,组织使用的是最新的实时数据流,这为企业提供了多种方式来转变其工作方式。
流数据的好处
以下是如何应用流数据来帮助现实世界的工作环境。
增强警报
流数据提供的功能最直接和最明显的好处就是有助于流式分析。当事件、异常或趋势开始发生时,会立即得到反馈。警报并不是流媒体的特性,但接收警报的人可以立即采取响应行动这一简单事实彰显其重要性。之所以会发生这种情况,是因为与批处理不同,不会有技术上的延迟。以下是警报作用的一些示例:
- 就网络安全而言,流数据可用于标记在调查过程中不合时宜的行为。许多网络安全环境都在选择机器学习,以帮助识别在网络中可能出现的潜在可疑行为。利用警报可视化效果和机器学习输出是让广大网络分析师能够检测威胁的最佳方式。这样,企业可以将其安全网络扩展到更广泛的人群,而不仅仅是安全专家和开发人员。
- 零售业也从警报中受益匪浅。每家商店都优先考虑不同的事物,信息技术团队也应给予优先级,以考虑哪些代码可以定制。流数据可用于检测诸如库存不足或客户兴趣异常高等情况。触发分析工具是为了向非技术人员而不是技术人员发出警报,这样就可以在像车间这样最重要的地方做出积极响应。
协同使用基于历史和数据流的分析
在许多情况下,历史数据与实时数据分析一起使用,使组织更全面了解业务情况。解释这一点的最佳用例是金融机构的风险评估。这些流程考虑了从过去已经执行过交易到现在的整个交易周期,涉及更改、转移或关闭。
将交易事件置于背景中时,这意味着该活动的交易数据将帮助组织者了解适用于其较大投资组合的模式。在这种情况下,通过分析历史和实时数据收集的信息可能意味着未来事件成功与巨大损失之间的区别。
创建完整记录的好处
在日常生活的几乎每个方面,无论是商业还是其他方面,物联网 (IoT) 都是发展方向,许多组织已经在使用物联网 (IoT)。但是,这里的一个大问题是,可以从流数据中生成多个相同的记录,从而导致信息重复。跟踪数据源虽然是必不可少的,但会导致相同的信息重复多次。由于有数以千计的源点,这很快就会变成问题,并使大部分数据变得多余。为了使利用物联网成为更可行的选择,可以做的是将所有重复信息放在单个查找表中。将数据流与查找表关联将有助于创建完整的记录,而不会出现重复的问题。
我们可以看到此解决方案在石油钻井平台上使用的示例,其中包含制造商名称和位置的重复信息。将这两个细节放在查找表中,并使用密钥(如 'manu_id')将其与数据流连接起来,将节省大量的数据空间。然后,可以使用此密钥来确定位置是否会影响各个方面,例如磨损、性能能力、其他维护要求等。通过使用查找表,可以大大减少非生产时间。
其他地方找不到的洞见
目前,围绕流技术的兴趣和发展是前所未有的。这是由技术进步推动的,而流数据分析带来巨大商业价值的认识进一步起到了助推作用。寻找下一个竞争优势的企业将转向流数据,以获得他们无法从现有分析方法中获得的洞见。该技术具有最直接明显的有益应用的一些领域包括:
- 位置数据的利用
- 欺诈检测
- 实时股票交易
- 营销、销售和业务分析
- 监控和分析客户或用户活动
- 监控和报告内部 IT 系统
- 协助进行日志监控
- 安全信息和事件管理 (SIEM)
- 跨多个渠道的零售和仓库库存
- 增强拼车匹配
- 合并数据以用于机器学习和基于人工智能的分析
- 开辟预测分析的新途径
构建数据流应用程序面临的挑战
与大多数技术系统一样,数据流也面临着一些挑战。以下是与构建数据流应用程序相关的一些困难:
工作环境中的可扩展性
在系统出现故障的情况下,从每台设备传入的日志数据可能会从每秒千比特发送速率提高到每秒兆比特。聚合后,发送速率甚至可以扩展到每秒千兆位。随着这些应用程序的扩展,以及生成的原始数据量随之增加,容量、资源和所需服务器的必要增加需要立即实现。能够设计出可以在工作环境中扩展流数据的无缝应用程序是一项艰巨的工作,需要考虑许多不同的同步流程。
序列的重要性
确定数据流中的数据序列不是一个小问题。数据流中的数据序列是应用程序能否很好地利用数据流的关键。如果开发人员想要调试机器人聊天应用程序的问题,那么对话的顺序对于确定哪里可能出错非常重要。聚合日志审核中的每一行都需要按顺序排列。问题通常源于生成的数据包的顺序与数据包到达目的点的顺序不一致。时间戳和生成数据的设备的时钟也可能存在差异。
保持一致性和耐久性
处理流数据时最棘手的一个问题是一致性和访问权限。生成的数据通常分发到世界各地的多个数据中心。当在一个数据中心访问数据时,它可能另一个数据中心已经被用过并成为冗余。在云端处理数据流时,数据的持久性对于开发人员来说也是一个持续的挑战。
容错和数据保障
在分布式系统上处理流数据时,必须同时考虑容错和数据保障。当您的数据来自多个来源和位置、格式各异、容量不同时,组织系统需要进行调整,以防止单点故障可能导致的中断。这些系统应该能够以持久的方式存储海量数据流。确保这一点绝非易事。
持续数据流中的任何中断都会使系统受到影响。如果系统无法存储中断的信息,不具备随后补救的能力,那么整个系统就会承受沉重的延迟数据负担。

流数据的未来
软件即服务、移动和基于互联网的应用程序的使用,以及数据科学和高级分析的使用,一致持续受到各类组织的关注并快速增长。几乎每家大中型公司都有某种形式的流数据项目,这些项目要么正在进行中,要么正在筹备中。所有这些都是基于保持领先地位并分析客户旅程、点击流数据以及其他几个可以生成有用报告的用例的愿望。
曾经有一段时间,流数据集中在组织中的一小部分人身上,主要是大数据工程师和数据科学家。这些专业人员使用极其复杂的技能,使用 Spark、Flink、MapReduce 和 Scala 等流计算进行处理。他们与业务分析师和商业智能专业人员协同工作,主要工作重点是针对关系数据库运行 SQL 查询。
随着我们步入新的一年,这种情况有望改变。随着越来越多的企业依赖流数据源,企业用户会希望能够像处理其他数据集那样处理流数据,就像软件开发团队一样采用交互式仪表板和临时分析的形式。这将使组织中不同层级的人员都能更轻松地访问数据。