这边目前主要还是yarn,目前痛点是同一个sql任务会用到多个udf,udf通过-C http://xxx.jar进行加载
udf和sql jar之间、udf和udf之间都可能会有依赖冲突, 目前初步想法是每个udf绑定一个jarpath,使用独立的classloader进行加载,避免和主jar以及其他udf之间的依赖冲突*来自志愿者整理的flink邮件归档
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
面对您提到的YARN环境下使用SQL任务时,UDF(用户自定义函数)与SQL jar之间、以及UDF相互之间的依赖冲突问题,采用独立的ClassLoaders来加载每个UDF及其相关jar确实是一个有效的解决方案。阿里云的DataWorks和EMR服务在处理这类问题上提供了一些高级特性和建议:
DataWorks:
E-MapReduce (EMR):
--conf
参数设置类加载策略,比如为不同的UDF配置独立的ClassLoaders。针对您提到的初步想法,实施时可能需要对Flink或Spark作业的提交脚本进行定制,确保每个UDF通过特定的命令行参数或者配置项指定了其专属的classloader和jar路径。同时,监控和日志系统也需相应调整,以便于追踪和调试潜在的类加载问题。
最后,考虑到长期维护和扩展性,逐步迁移到支持更细粒度资源管理和依赖隔离的平台或框架也是一个值得考虑的方向,如上述提及的阿里云DataWorks和EMR服务,它们能够提供更加完善的解决方案来应对复杂的依赖管理挑战。