我正在执行scala Spark作业,该作业需要使用Java库(youtube/vitess),该库依赖于DataProc 1.1上当前提供的GRPC(1.01),Guava(19.0)和Protobuf(3.0.0)的较新版本。图像。

当在本地运行项目并使用maven进行构建时,将加载这些依赖项的正确版本,作业将无问题运行。将作业提交给DataProc时,首选这些库的DataProc版本,并且该作业将引用无法解析的类函数。

在DataProc上提交Spark作业时,如何确保加载正确版本的依赖项依赖关系的推荐方法是什么?我无法重写此库的组件,以使用DataProc提供的这些软件包的较旧版本。

最佳答案

推荐的方法是将您工作的所有依赖项都包含在该uber jar中的uber jar(例如,使用Maven Shade插件创建)和relocate依赖项类中,以避免与Dataproc提供的库中的类冲突。

作为引用,您可以看一下doneCloud Storage connector的情况,它是Dataproc发行版的一部分。

关于apache-spark - 如何管理冲突的DataProc Guava,Protobuf和GRPC依赖项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40498542/

10-10 21:39