[python教程入门学习]Python流处理

Faust是Python中的一个流处理库,源于Kafka流思想,常用于构建高性能分布式系统。它提供了流处理和事件处理功能,支持Python3.6以上版本,允许使用Python生态中的各种库如NumPy、PyTorch等。Faust具有高可用性,可分布式部署,且具备持久化状态能力,使用RocksDB进行存储。通过agent装饰器定义流处理器,可以实现异步操作和键值存储。Faust易于学习,可以与Django、Flask等框架配合使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python流处理

Faust是一个流处理库,将kafka流中的思想移植到Python中。

它被用于Robinhood去构建高性能的分布式系统和实时数据通道,每天处理数十亿的数据。

Faust同时提供流处理和事件处理,同类型的工具分享例如:Kafka Streams, Apache Spark/Storm/Samza/Flink

它不需要使用一个DSL,仅需要用到Python!这意味着你在做流处理的时候可以使用所有你喜欢的Python库:NumPy, PyTorch, Pandas, NLTK, Django, Flask, SQLAlchemy等等。

由于需要使用新的async/await语法和变量类型注释方法,Faust需要使用Python3.6以上的版本。

这里有一个处理输入命令流的示例:

Python流处理

这个agent装饰器定义了一个“流处理器”,它本质上是一个Kafka topic,并且可以对接收到的每个事件做一些处理。

这个agent是一个async def的函数,因此它还可以异步执行其他操作,如web请求。

这个系统可以持久化状态,执行方式类似于数据库。表被命名成分布式的key/value储存,你可以使用常规的Python字典来做这件事。

在每台机器上的本地用c++编写的超快嵌入式数据库(被称为RocksDB)存储表。

表还可以存储可选的“窗口”聚合计数,以便跟踪“前一天的单击次数”或“前一个小时的单击次数”。与Kafka流一样,我们支持滚动、跳跃和滑动时间窗口,旧窗口可以过期以阻止数据填充。

为了提高可靠性,我们使用Kafka topic作为“预写日志”。当一个密钥被更改时,我们将其发布到更新的日志上。备用节点使用这个更新日志来保存数据的精确副本,并在任何节点发生故障时支持立即恢复。

对于用户来说,表只是一个字典,但是数据在重新启动和跨节点复制之间存在,所以在故障发生时其他节点可以自动接管。

您可以通过URL统计页面浏览数量:

Python流处理

发送到Kafka topic的数据是分区的,这意味着点击数将用URL的这种方式进行分片。因此,同一个URL的每个计数都会立刻被传递给同一个Faust worker实例。

Faust支持任何类型的流数据:字节、Unicode和序列化结构,同时也支持使用现代Python语法的“模型”来描述流中的keys和value是如何被序列化的。

Python流处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值