Как приоритизировать зависимость maven от пути к классу Spark при отправке задания Spark?
У меня есть дистрибутив Cloudera Hadoop, Spark и т. Д., Где версия Spark-Kafka составляет 0,8 (т.е. spark-streaming-kafka-0-8_2.11).
Проблема в том, что версия 0.8 Apache Spark с интеграцией Kafka имеет встроенную версию Kafka 0.8.2.1, и мне требуется 0.10.0.1.
Есть ли способ обойти это? Я не хочу использовать spark-streaming-kafka-0-10_2.11, потому что это не стабильная версия.
Я попытался добавить это к моим зависимостям maven (упаковка с jar-файлами), но classpath имеет приоритет над моими зависимостями maven.
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-streaming-kafka-0-8_2.11</artifactId>
<version>2.3.0.cloudera1</version>
<exclusions>
<exclusion>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka_2.11</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka_2.11</artifactId>
<version>0.10.0.1</version>
</dependency>
1 ответ
Вам нужно будет поставить зависимость kafka выше зависимости spark, чтобы она выглядела примерно так:
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka_2.11</artifactId>
<version>0.10.0.1</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-streaming-kafka-0-8_2.11</artifactId>
<version>2.3.0.cloudera1</version>
<exclusions>
<exclusion>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka_2.11</artifactId>
</exclusion>
</exclusions>
</dependency>