44、流处理:从概念到实现

流处理:从概念到实现

1. 流处理概述

在数据处理领域,传统的批处理技术是读取一组文件作为输入,生成一组新的输出文件。输出是一种派生数据,必要时可以通过再次运行批处理过程来重新创建。然而,批处理有一个重要假设,即输入是有界的,也就是已知且大小有限,这样批处理过程才能知道何时完成输入读取。

但在现实中,很多数据是无界的,因为它们会随着时间逐渐到来。例如,用户每天都会产生新的数据,除非业务停止,否则这个过程不会结束,数据集也永远不会真正“完整”。因此,批处理程序必须人为地将数据划分为固定时长的块,比如每天结束时处理一天的数据,或每小时结束时处理一小时的数据。

不过,每日批处理的问题在于输入的变化要一天后才会反映在输出中,这对于很多用户来说太慢了。为了减少延迟,可以更频繁地运行处理,甚至连续处理,即完全放弃固定时间片,实时处理每个事件,这就是流处理的理念。

一般来说,“流”指的是随着时间逐渐提供的数据。这个概念在很多地方都有体现,如Unix的标准输入输出、编程语言中的惰性列表、文件系统API(如Java的FileInputStream)、TCP连接以及互联网上的音视频传输等。

2. 事件流的传输

在批处理中,作业的输入和输出是文件(可能在分布式文件系统上)。那么流处理的等效形式是什么呢?

当输入是文件(字节序列)时,第一个处理步骤通常是将其解析为记录序列。在流处理中,记录更常被称为事件,它本质上是一个小的、自包含的、不可变的对象,包含某个时间点发生的事情的详细信息。事件通常包含一个时间戳,指示事件发生的时间。

事件可以编码为文本字符串、JSON或二进制形式。这种编码方式允许将事件存储

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值