背景
Apache Flink Python API , 简称 PyFlink 是Apache Flink 对多语言支持的第一步,针对Python用户进行深度支持。PyFlink相对较新新的模块,第一个版本是在Flink 1.9 中发布的。之后在Flink 1.10和1.11两个大的版本发布中,PyFlink进行了大量的功能增加和性能优化。目前在国内也有一些企业应用PyFlink来支撑其数据计算业务。比如:聚美优品, 浙江墨芷。 但目前投产的企业用户大多是参与了PyFlink 社区扶持计划才得以顺利投产的,其根本原因是PyFlink目前缺少案例性介绍,缺少实战类的端到端的示例介绍。进而很多用户想用但是有无从用起。所以我和的PyFlink小伙伴讨论整理几个可以体现PyFlink核心应用和特点的示例供大家直观的体验PyFlink的功能特点,并且也可以按照示例介绍亲自动手开发PyFlink作业。快速了解PyFlink,进而解决您实际业务需求。
PyFlink 应用场景
PyFlink致力于将现有Flink的功能输出给Python用户,同时也会极大程度的让丰富的Python生态库功能借助于Flink具备分布式计算能力。
基于这样的目标,PyFlink所适用的场景覆盖Flink擅长的应用场景和Python生态所适应的场景,比如 事件驱动,数据分析,ETL等,如下图所示:
PyFlink的Roadmap
PyFlink按照先对齐Flink Java用户所能使用的功能,再逐渐集成各种主流的Python生态库,以这样的思考来规划PyFlink的功能开发,比如:1.9 提供 Table API&SQL, 1.10 提供Python UDF, 1.11 提供Pandas的生态库集成等,具体如下图所示:
所以,在未来的1.12版本中,PyFlink将支持Python DataStream的功能,Python用可以享受到Flink90%的功能。同时Pandas UDAF的支持也进一步加强了Flink对Python生态的集成。
PyFlink 性能怎么样?
性能一直是用户关心的重点问题,Flink通过这几年的发展,其性能得到了目前Java用户的高度认可,也经历了多年阿里双11的历练,去年2019年双11实时计算峰值达到了25.51亿次/秒。那么Java性能这么优秀,Python用户可以享受到吗?当然可以,PyFlink架构决定了Python 用户编写的Table API/SQL作业和Java性能高度一致。PyFlink API架构如下图:
这个架构决定了Python用户编写的Table API/SQL作业在运行的时候都是运行的Java算子,Python用户和Java用户都是运行在一套底层引擎之上。 所以大家也不用担心 PyFlink的执行性能。
当然上面架构没有体现PythonUDF的执行性能,因为Python UDF需要有独立的Python执行容器,那么目前PyFlink1.11版本相对于1.10有30倍的性能提升,初步测试比PySpark的UDF性能还要出色。后面案例我们也会有对比介绍。
本系列内容安排
本系列会为大家准备几个端到端的示例演示,从整体开发环境准备,到具体示例业务逻辑介绍,再到具体代码的开发逐一向大家进行详细介绍,整体包含的内容纲要如下:
- PyFlink 1.11 游乐场 - 开发环境准备
- PyFlink 1.11 游乐场 - 双11各地成交额统计(数据分析类)
- PyFlink 1.11 游乐场 - 基于Pandas类库清洗熔炉温度采集数据(ETL类)
- PyFlink 1.11 游乐场 - 应用Kmeans进行商品分类(机器学习类)
- PyFlink 1.11 游乐场 - Python UDF 性能对比(PyFlink版本之间&PySpark和PyFlink对比)
- PyFlink 1.11 游乐场 - 。。。
- PyFlink 1.11 游乐场 - 。。。
- PyFlink 1.11 游乐场 - 。。。