我正在开发一个需要使用
java库(youtube / vitess)的scala Spark作业,它依赖于比DataProc 1.1上提供的更新版本的GRPC(1.01),Guava(19.0)和Protobuf(3.0.0).图片.
在本地运行项目并使用maven构建时,会加载这些依赖项的正确版本,作业将毫无问题地运行.将作业提交到DataProc时,首选这些库的DataProc版本,作业将引用无法解析的类函数.
在DataProc上提交Spark作业时,建议确保加载依赖项依赖项的正确版本的方法是什么?我无法重写此库的组件以使用DataProc提供的这些软件包的旧版本.
最佳答案 建议的方法是将您的作业的所有依赖项包含在uber jar(例如,使用
Maven Shade插件创建)和此uber jar中的
relocate依赖项类中,以避免与Dataproc提供的库中的类冲突.
作为参考,您可以看一下Cloud Storage connector中done是Dataproc发行版的一部分.