Python 生态分布化的 UDF 执行技术选型是什么?
解决 Python UDF 执行问题可不仅仅是 VM 之间通讯的问题了,它涉及到 Python 执行环境的管理,业务数据在 Java 和 Python 之间的解析, Flink State Backend 能力向 Python 的输出, Python UDF 执行的监控等等,是一个非常复杂的问题。面对这样复杂的问题,前面我们介绍过 Apache Beam ,支持多引擎多语言,无所不能的大象可以出场了,我们来看一下 Beam 是怎么解决 Python UDF 执行问题的 :)
Beam 为了解决多语言和多引擎支持问题高度抽象了一个叫 Portability Framework 的架构,如下图,Beam 目前可以支持 Java/Go/Python 等多种语言,其中图下方 Beam Fu Runners 和 Execution 之间就解决了 引擎和 UDF 执行环境的问题。其核心是对利用 Protobuf 进行数据结构抽象,利用 gRPC 协议进行通讯,同时封装了核心的 gRPC 服务。所以这时候 Beam 更像是一只萤火虫,照亮了 PyFlink 解决 UDF 执行问题之路。:)(多说一嘴,萤火虫已经成为了 Aapche Beam 的吉祥物)。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。