提交Spark作业时,如何优先于Maven依赖项优先于Spark类路径?

时间:2018-12-28 01:00:35

标签: maven apache-spark apache-kafka spark-streaming spark-streaming-kafka

我有Hadoop,Spark等的Cloudera发行版,其中Spark-Kafka版本为0.8(即spark-streaming-kafka-0-8_2.11)。

问题是,具有Kafka集成功能的Apache Spark版本0.8内置有Kafka版本0.8.2.1,我需要0.10.0.1。

是否有解决此问题的方法? 我不想使用spark-streaming-kafka-0-10_2.11,因为它不是稳定版本。

我尝试将其添加到我的Maven依赖项(与jar打包在一起)中,但是类路径优先于我的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 个答案:

答案 0 :(得分:0)

您需要将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>