Spark-submit не использует версию Probubuf моего проекта - PullRequest
0 голосов
/ 09 июня 2018

В своем рабочем проекте я использую spark-submit для запуска приложения в кластере пряжи.Я довольно новичок в проектах Maven и использовании pom.xml, но проблема, с которой я, похоже, сталкиваюсь, состоит в том, что hadoop использует более старую версию google protobuf (2.5.0), чем внутренние зависимости, которые я импортирую на работе (2.6.1).

Ошибка здесь:

java.lang.NoSuchMethodError:
com/google/protobuf/LazyStringList.getUnmodifiableView()Lcom/google/protobuf/LazyStringList;
(loaded from file:/usr/hdp/2.6.4.0-91/spark2/jars/protobuf-java-2.5.0.jar 
by sun.misc.Launcher$AppClassLoader@8b6f2bf7) 
called from class protobuf.com.mycompany.group.otherproject.api.JobProto$Query

Поскольку я не совсем уверен, как подходить к таким проблемам зависимости, и я не могу изменить код внутренней зависимости, который использует 2.6.1, я добавил требуемую версию protobuf в качестве зависимости к моему проекту, а также:

<dependency>
    <groupId>com.google.protobuf</groupId>
    <artifactId>protobuf-java</artifactId>
    <version>2.6.1</version>
</dependency>

К сожалению, это не решило проблему.Когда внутренняя зависимость (которая импортирует 2.6.1 сама по себе) пытается использовать свой прото, возникает конфликт.

Любые предложения о том, как я могу заставить использование более новой, правильной версии, будут с благодарностью.

1 Ответ

0 голосов
/ 17 ноября 2018

В конце концов я нашел плагин Maven Shade, чтобы быть ответом.Я заштриховал версию protobufs моей компании, развернул наш сервис как Uber JAR, и конфликт был решен.

...