FLINK Notebook 混合编程:PYTHON (一)

本文探讨了如何使用Py4j在Flink中实现Python与Java的混合编程,介绍了Py4j的基本原理和Flink中的应用。重点讨论了在Flink Notebook服务中创建混合语言编程环境,以解决非标任务的需求。文章提出了三种混合编程方案,并预告了后续文章将详细介绍实现细节和Demo。
摘要由CSDN通过智能技术生成

本文介绍了 Py4j的使用以及 Flink官方如何使用 Py4j进行混合语言编程,最后会介绍下我们会应用这种技术在我们的 Flink Notebook 服务,来创建一个混合语言编程环境。

Flink Notebook 服务是我司自研的基于Notebook方式的Flink 开发平台,他支持用户通过SQL方式和JAR包方式进行混合编程,并通过一些配置,既可完全的在页面上完成FLINK任务的开发工作,如图:

在这里插入图片描述

​ 通过不同的Notebook Type我们可以加载不同类型的组件,通过table结果集流转方式,承接上下游,以完成相应的功能。目前的插件类型主要是主要分:1.SQL组建:可以自由撰写SQL,2.格式化组建:sink或者source,有具体的格式,标准的前端组建对应,3.JAR包自定义组件,通过用户上传自己开发的jar包完成对应的逻辑。

​ 对于Jar包自定义组件来说,他是为了解决1%的特异性需求的,但问题是其代码不可见,逻辑也相对自由,有违Notebook的初衷,因此,我们想设计一种Notebook的Type,支持可视化的Python编写,可以直接将代码在页面上进行开发。

​ Flink 本身来说,就有PyFlink 和 Python UDF support,因此python和 flink的耦合度应该很高,所以我们要了解Flink是怎么做的,从而研究我们应该如何去做,所以本文会分成以下3个部分来介绍整个混编逻辑:

1. Java与Python 通信:Py4J
2. Py4j in Flink
3. Notebook with Python

Py4j 介绍

Py4j可以使运行于python解释器的python程序动态的访问java虚拟机中的java对象。Java方法可以像java对象就在python解释器里一样被调用, java collection也可以通过标准python collection方法调用。Py4j也可以使java程序回调python对象。

详细说明可以参考官网 https://www.py4j.org/

安装以及基本使用也可以参考官网

Py4j可以在系统中创建一个 java和python 之间通信的socket管道。
在这里插入图片描述
我们可以通过一个例子来看整个Py4j是如何工作的。

我们先创建一个想让python负责具体实现的Java 接口:

public interface TestEnterPoint {
   
    String gift(HashMap<String,String> a, String b);
}

在java 服务端,我们通过以下代码可以启动一个简单的Py4j监听:

    public static void main(String[] args) {
   
        ListenerApplication application = new 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值