我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python入门学习之Python流处理过程

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python入门学习之Python流处理过程

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流处理

Faust是静态类型的,使用mypy类型检查器,所以您在编写应用程序时可以充分利用静态类型的优势。

Faust源代码很小,组织良好,是学习Kafka流实现的好资源。

在引言页学习更多关于Faust的知识.jpg

去阅读更多关于Faust,系统请求,安装指导,论坛资源等等,或者直接访问快速开始的教程。在一个编写流处理的应用中去查看关于Faust应用,然后通过使用者手册深入探讨。深层次的信息都根据不同主题在这个手册中进行说明

Faust简介

Faust非常容易使用。在学习其他的流处理方法时,你总是需要从一个复杂的hello-world工程和相应的基础要求开始学习。Faust仅仅需要Kafka,剩下的就是只需要Python,如果你知道Python的话你就可以直接使用Faust去做流处理的工作了,并且它可以整合和他相关的一切。

这儿有一个简单的应用程序你可以做:源代码是Python的

Python流处理

您可能会被async和await这两个关键字吓到,但是您在使用Faust时不需要知道asyncio是如何工作的:只要模仿这些例子就可以得到您想要的结果。

示例应用程序启动两个任务:一个是处理流,另一个是向流发送事件的后台线程。在实际的应用程序中,您的系统将向Kafka topic发布事件,您的处理器可以从Kafka topic获取事件信息,并且只需要后台线程将数据输入到我们的示例中。

高可用性

Faust是高度可用的,并且可以在网络问题和服务器崩溃中生存下来。在节点失败的情况下,它可以自动恢复,并且表将接管备用节点。

分布式的

根据您的应用程序的需要启动更多实例。

快速

一个单内核的Faust worker实例已经可以每秒处理数万个事件,我们有理由相信,一旦我们能够支持一个更优化的Kafka客户端,吞吐量就会增加。

灵活性

Faust就是Python,而流是一个无限的异步迭代器。如果您知道如何使用Python,那么您已经知道如何使用Faust,它可以与您喜欢的Python库一起使用,比如Django、Flask、SQLAlchemy、NTLK、NumPy、Scikit、TensorFlow等等。

安装

您可以通过Python包或从源文件中安装Faust

使用pip安装它:

Python流处理

绑定

Faust还定义了一组setuptools扩展,可以用来安装Faust,并且有一个给定特性的依赖关系。

您可以在您的需求中或在pip命令行中使用方括号来指定它们。使用逗号分隔多个包:

Python流处理

以下的绑定均是有效的:

商店

Python流处理

最优化

Python流处理

传感器

Python流处理

事件循环

Python流处理

调试

Python流处理

下载并从源文件中安装

您可以这样安装它:

image.png

如果当前没有使用virtualenv,则必须以特权用户的身份执行最后一个命令。

使用开发版本

您可以使用以下pip命令安装Faust的最新版本:

Python流处理

常见问题

Faust可以在Django/Flask/etc上使用吗?

使用gevent

这种方法适用于任何可以与gevent一起工作的阻塞Python库。

使用gevent需要您安装aiogevent模块,您可以将其作为Faust的包进行安装:

Python流处理

然后要真正的使用gevent作为事件循环,您要么在faust程序中使用-L <faust --loop>

命令:

Python流处理

要么在你脚本的前面加入import mode.loop.gevent

Python流处理

警告

非常重要的是,它位于模块的最顶端,并且在导入库之前执行。

Faust可以在Tornado上使用吗?

可以!使用tornado.platform.asyncio

链接:http://www.tornadoweb.org/en/stable/asyncio.html

Faust可以在Twisted上使用吗?

可以!使用asyncio反应器实现:

链接:https://twistedmatrix.com/documents/17.1.0/api/twisted.internet.asyncioreactor.html

是否支持Python3.5或者更早的版本?

目前还没有支持Python 3.5的计划,但是欢迎您为这个项目做出贡献。

以下是实现这一目标所需的一些步骤

  • 源代码转换以重写变量注释到注释

示例,代码:

image.png

  • 重写异步函数的源代码转换

示例,代码:

Python流处理

必须重写:

Python流处理

你将支持Python2吗?

目前还没有支持Python 2的计划,但是欢迎您为项目做贡献(上面问题中的细节也与Python 2相关)。

在本地运行Faust应用程序时,我得到的打开文件的最大数量超过了RocksDB的错误。我该怎么解决这个问题呢

您可能需要增加打开文件的最大数量的限制。

资源

编码规范

在项目代码库、问题跟踪器、聊天室和邮件列表中进行交互的每个人都应该遵循《Faust行为准则》。

作为这些项目的贡献者和维护者,为了培养开放和受欢迎的社区,我们承诺尊重所有通过报告问题、发布特性请求、更新文档、提交合并请求或补丁和其他活动的人。

我们致力于使参与这些项目的每个人都无骚扰体验,不论其经验水平、性别、性别认同和表现、性取向、残疾、个人外貌、体型、种族、种族、年龄、宗教或国籍。

参与者不良行为包括:

  • 性化的语言或意象的使用
  • 个人人身攻击
  • 恶意破坏或侮辱/侮辱性的评论
  • 公共或者私人的骚扰
  • 未经明确许可,发布他人的私人信息,如住址或电子地址
  • 其他不道德或不专业的行为。

项目维护人员有权利和责任删除、编辑或拒绝评论、提交、代码、wiki编辑、问题和其他与行为准则不一致的贡献。通过采用这一行为准则,项目维护者承诺在管理这个项目的每个方面都公平、一致地应用这些原则。不遵守或执行行为准则的项目维护者可能被永久地从项目团队中删除。

当个人代表项目或社区时,此行为准则适用于项目空间和公共空间。

可以通过创建一个问题或联系一个或多个项目负责人来举报虐待、骚扰或其他不可接受行为。

以上就是Python入门学习Python流处理过程的详细内容,更多关于Python入门的资料请关注编程网其它相关文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python入门学习之Python流处理过程

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python入门学习之operator-

本模块主要包括一些Python内部操作符对应的函数。这些函数主要分为几类:对象比较、逻辑比较、算术运算和序列操作。操作 语法函数相加a + b add(a, b)字符串拼接seq1 + seq2concat(seq1, seq2)包含测试o
2023-01-31

python入门学习之变量篇

【前言】在公司内部wiki上看到一个不错的学习网站,遂开始了我这慢悠悠的学习之旅。网站链接:https://www.codecademy.com1.理解布尔值一种数据类型。简单来说,正如你家里的电灯有开关两种状态一样,布尔值同样也有两个值,
2023-01-31

好程序员Python学习路线之python爬虫入门

  好程序员Python学习路线之python爬虫入门,随着网络的迅速发展,万维网成为大量信息的载体,如何有效地提取并利用这些信息成为一个巨大的挑战。搜索引擎(Search Engine),例如传统的通用搜索引擎AltaVista,Yaho
2023-06-02

python 学习之路1-如何入门

过去20年,我一直有一个想法就是学一门编程语言,可惜一直没有实现。C我看过,C++也看过,PHP了解过,最后是的没有最后。。。。。 回望过去简单说就是没有懂到底学习了什么,也无法把学习到的知识应用到实际,然后往开发走,所有我过去10多
2023-01-31

Python画图学习入门教程

本文实例讲述了Python画图的基本方法。分享给大家供大家参考,具体如下: Python:使用matplotlib绘制图表 python绘制图表的方法,有个强大的类库matplotlib,可以制作出高质量的2D和3D图形,先记录一下,以后慢
2022-06-04

Python学习之利用Python处理J

最近在研究利用zabbix的自动发现功能来监控一台服务器上的多个Redis端口。网上有篇文章写个Python程序来发现Redis端口并显示成JSON格式。这里就学习下Python如何处理JSON格式数据。处理JSON,需要用到python的
2023-01-31

​​​​​​​Python入门学习之函数式编程的方法

本篇内容介绍了“Python入门学习之函数式编程的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!前言在 Python 中,函数是「头等公
2023-06-30

python学习之异常处理

一、语法导致的异常,应该在程序运行前处理例子:print(输出:File "E:/python/oldboyday9/learn1.py", line 4    if     ^SyntaxError: invalid syntax注:输出
2023-01-31

Python学习入门基础教程(learn

在Python里可以自定义函数,实现某特定功能,这里首先要区分一下函数的定义和函数的调用两个基本概念,初学者往往容易混淆。      函数的定义是指将一堆能实现特定功能的语句用一个函数名标识起来,而函数的调用则是通过函数名来使用这一堆语句来
2023-01-31

Python学习入门基础教程(lear

在if分支判断语句里的条件判断语句不一定就是一个表达式,可以是多个(布尔)表达式的组合关系运算,这里如何使用更多的关系表达式构建出一个比较复杂的条件判断呢?这里需要再了解一下逻辑运算的基础知识。逻辑关系运算有以下几种运算符.     下面是
2023-01-31

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录