首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >为什么会有流处理?

为什么会有流处理?

作者头像
JavaEdge
发布2022-10-04 08:38:00
3300
发布2022-10-04 08:38:00
举报
文章被收录于专栏:JavaEdgeJavaEdge

批处理技术,它读取一组文件作为输入,并生成一组新的文件作为输出。输出是 衍生数据(derived data) 的一种形式;即若需要,可通过再次运行批处理过程来重新创建数据集。我们看到了如何使用这个简单而强大的想法来建立搜索索引、推荐系统、做分析等。

但这有很大的假设:输入有界,即已知和有限的大小,所以批处理知道它何时能完成输入的读取。如MapReduce核心的排序操作须读全部输入,才能开始生成输出。这就可能发生case:最后一条输入记录具有最小的键,因此需第一个被输出,所以提早开始输出是不可行的。

而很多数据无界,因为它随着时间推移而逐渐到达:你的用户在昨天和今天产生数据,明天他们将继续产生数据。除非你停业,否则该过程永不结束,所以数据集从来就不会以任何有意义的方式而 “完成”。因此,批处理程序必须将数据人为分成固定时间段的数据块,如每天结束时处理一天的数据或每h结束时处理一小时的数据。

批处理的问题是,输入的变更只会在一天之后的输出中反映,对急躁的用户来说太慢。为减少延迟,可更频繁运行处理,如每s的末尾或更连续一些,完全抛开固定时间切片,当事件发生时就立即处理,这就是流处理(stream processing)的想法。

一般来说,“流” 是指随着时间的推移逐渐可用的数据。这个概念出现在很多地方:Unix 的 stdin 和 stdout,编程语言(惰性列表)【2】,文件系统 API(如 Java 的 FileInputStream),TCP 连接,通过互联网传送音频和视频等等。

本文将把 事件流(event stream) 视为一种数据管理机制:无界限,增量处理,与上一章中的批量数据相对应。我们将首先讨论怎样表示、存储、通过网络传输流。在 “数据库与流” 中,我们将研究流和数据库之间的关系。最后在 “流处理” ,研究连续处理这些流的方法和工具,以及它们用于应用构建的方式。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-09-30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档