作为流计算领域的佼佼者,Flink框架在这两年的发展势头不容小觑,尤其是在不少大公司的数据平台上,都争相开始引入Flink引擎。而作为一个流批一体的大数据计算引擎,Flink在语言支持上也更加开明,比如说支持Python API架构。今天,我们就主要来聊聊Flink Python相关的内容。
 

python读写flink python操作flink_分布式

Flink在 1.9.0版本开启了新的ML接口和全新的Python API架构,并且已经支持了大部分常用的一些算子,比如JOIN,AGG,WINDOW等。Python作为解释型语言,简洁和易用性使其成为了世界上最受欢迎的语言,在大数据计算领域都有着很好的生态建设。

Flink Python API架构

Python API架构分为用户API部分,PythonVM和Java VM的通讯部分,和最终将作业提交到Flink集群进行运行的部分。在Python端会会有一个Python的Gateway用于保持和Java通讯的链接,在Java部分有一个GateWayServer用于接收Python部分的调用请求。

Table API和Python API之间的通讯采用了一种简单的办法,利用Python VM和Java VM进行通信。在Python API的书写或者调用过程中,以某种方式来与Java API进行通讯。操作Python API就像操作Java的Table API一样。新架构中可以确保以下内容:

不需要另外创建一套新的算子,可以轻松与Java的Table API的功能保持一致;

得益于现有的Java Table API优化模型,Python写出来的API,可以利用Java API优化模型进行优化,可以确保Python的API写出来的Job也能够具备极致性能。

当Python发起对Java的对象请求时候,在Java段创建对象并保存在一个存储结构中,并分配一个ID给Python端,Python端在拿到Java对象的ID后就可以对这个对象进行操作,也就是说Python端可以操作任何Java端的对象,这也就是为什么新的架构可以保证Python Table API和Java Table API功能一致,并且能过服用现有的优化模型。

在新的架构和通讯模型下,Python API调用Java API只需要在持有Java对象的ID,将调用方法的名字和参数传递给Java VM,就能完成对Java Table API的调用,所以在这样的架构中开发Python Table API与开发Java Table API的方式完全一致。

以上就是对于Flink Python架构方面的一些知识分享了,Flink作为一个流批一体的计算引擎,在越来越多的场景当中表现出强劲的竞争力,掌握Flink,对于大数据开发人员来说,是非常有竞争优势的。