引入 Jar Service:支持用户自助上传 UDF jar 包,并在 SQL 片段中自助引用,实现自助管理 UDF。同时自定义作业也可以配置 Jar Service 中的 Jar,面对多个作业共用同一个 Jar 的场景,用户只需要在作业中配置 Jar Service 中的 jar 包路径就可以,避免每次上线都重复上传 Jar 的繁琐操作;
我们引入了 Jar Service 服务用来管理各种 Jar,包括用户自定义作业、平台内部 SDK 组件、UDXF 等,在 Jar Service 基础上我们可以很容易的实现 UDXF 的自助管理,在 On k8s 的场景下,我们提供了统一的镜像,Pod 启动后会从 Jar Service 下载对应的 Jar 到容器内部,用于支持作业的启动。
用户提交的 SQL 中如果包含 Function DDL,我们会在 Job Client Service 中会解析 DDL,下载对应的 Jar 到本地。
为了避免和其他作业有依赖冲突,我们每次都会单独启动一个子进程来完成作业提交的操作。UDXF Jar 会被并加入到 classpath 中,我们对 Flink 做了一些修改,作业提交时会把这个 Jar 一并上传到 HDFS 中;同时 AutoSQL SDK 会根据函数名称和类名为当前作业注册 UDF。