如何管理冲突的DataProc Guava,Protobuf和GRPC依赖项

时间:2016-11-09 00:12:48

标签: apache-spark google-cloud-dataproc google-hadoop vitess

我正在开发一个需要使用java库(youtube / vitess)的scala Spark作业,它依赖于比目前提供的更新版本的GRPC(1.01),Guava(19.0)和Protobuf(3.0.0)。 DataProc 1.1图像。

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

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

1 个答案:

答案 0 :(得分:3)

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

作为参考,您可以查看done中这是Cloud Storage connector的方式,这是Dataproc发行版的一部分。