Python 生态分布化的 UDF 技术架构是什么?
在 UDF 的架构中我们我既要考虑 Java VM 和 Python VM 的通讯问题,又要考虑在编译阶段和在运行阶段的不同需求。图中我们以绿色表示 Java VM 的行为,蓝色表示 Python VM 的行为。首先我们看看编译阶段,也就是local的设计,在local的设计是纯 API 的 mapping 调用,我们仍然要过 Py4J 来解决通讯问题,也就是如图 Python 每执行一个 API 就会同步的调用 Java 所对应的 API 。
对 UDF 的支持上,需要添加 UDF 注册的 API , register_function,但仅仅是注册还不够,用户在自定义 Python UDF 的时候往往会依赖一些三方库,所以我们还需要增加添加依赖的方法,那就是一系列的 add 方法,比如 add_Python_file()。在编写 Python 作业的同时, Java API 也会同时被调用在提交作业之前,Java 端会构建JobGraph。然后通过 CLI 等多种方式将作业提交到集群进行运行。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。