1、为什么需要PyFlink
PyFlink到底是什么?顾名思义,PyFlink就是Apache Flink与Python的组合,或者说是Python上的Flink。但是Flink on Python是什么意思?首先,两者的结合意味着您可以在Python中使用Flink的所有功能。而且,更重要的是,PyFlink还允许您在Flink上使用Python广泛的生态系统的计算功能,从而可以进一步促进其生态系统的开发
2、Python和大数据生态系统
3、python和flink交互逻辑
flink是java开发的,python要是想和它进行交互,就是通过python虚拟机和Java虚拟机进行握手,这对于Flink支持多种语言至关重要。要解决此问题,我们必须选择适当的通信技术
4、选择虚拟机通信技术
当前,有两种解决方案可用于实现PyVM和JVM之间的通信,它们是Beam和Py4J。前者是一个著名的项目,具有多语言和多引擎支持,而后者是用于PyVM和JVM之间通信的专用解决方案。我们可以从几个不同的角度比较和对比Apache Beam和Py4J,以了解它们之间的区别。首先,考虑一个比喻:要越过一堵墙,Py4J会像痣一样在其中挖一个洞,而Apache Beam会像大熊一样把整堵墙推倒。从这个角度来看,使用Apache Beam来实现VM通信有点复杂。简而言之,这是因为Apache Beam专注于通用性,在极端情况下缺乏灵活性。
除此之外,Flink还需要交互式编程。此外,为了使Flink正常工作,我们还需要确保其API设计中的语义一致性,尤其是在其多语言支持方面。Apache Beam的现有体系结构无法满足这些要求,因此答案很明显,Py4J是支持PyVM和JVM之间通信的最佳选择。
技术架构
在PyVM和JVM之间建立通信之后,我们已经实现了向Python用户提供Flink功能的第一个目标。我们已经在Flink 1.9版中实现了这一点。现在,让我们看一下Flink 1.9版中PyFlink API的体系结构:
Flink 1.9版使用Py4J来实现虚拟机通信。我们为PyVM启用了网关,为JVM启用了网关服务器以接收Python请求。此外,我们还提供了Python API中的TableENV和Table之类的对象,这些对象与Java API中提供的对象相同。因此,编写Python API的本质是关于如何调用Java API。Flink 1.9版还解决了作业部署问题。它使您可以通过各种方式提交作业,例如运行Python命令以及使用Python Shell和CLI。
PyFlink的应用场景
PyFlink支持哪些业务方案?我们可以从两个角度分析其应用场景:Python和Java。请记住,PyFlink也适用于Java可以应用的所有情况。
-
事件驱动的方案,例如实时数据监控。
-
数据分析,例如库存管理和数据可视化。
-
数据管道,也称为ETL方案,例如日志解析。
-
机器学习,例如有针对性的建议。
相关连接: