Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
创建JavaSparkContext时发生NoClassDefFoundError_Java_Apache Spark_Spring Boot - Fatal编程技术网

创建JavaSparkContext时发生NoClassDefFoundError

创建JavaSparkContext时发生NoClassDefFoundError,java,apache-spark,spring-boot,Java,Apache Spark,Spring Boot,我有一个Spring启动应用程序,我在其中添加了Spark核心依赖项,因为我想在其中使用JavaSparkContext 不幸的是,当我尝试初始化应用程序时,我得到了这个NoClassDefFoundException: Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.apache.spark.api.java.JavaSparkContext]: Factor

我有一个Spring启动应用程序,我在其中添加了Spark核心依赖项,因为我想在其中使用JavaSparkContext

不幸的是,当我尝试初始化应用程序时,我得到了这个
NoClassDefFoundException

Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.apache.spark.api.java.JavaSparkContext]: Factory method 'javaSparkContext' threw exception; nested exception is java.lang.NoClassDefFoundError: com/sun/jersey/spi/container/servlet/ServletContainer
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:189) ~[spring-beans-4.2.3.RELEASE.jar:4.2.3.RELEASE]
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:588) ~[spring-beans-4.2.3.RELEASE.jar:4.2.3.RELEASE]
... 44 common frames omitted
Caused by: java.lang.NoClassDefFoundError: com/sun/jersey/spi/container/servlet/ServletContainer
at org.apache.spark.status.api.v1.ApiRootResource$.getServletHandler(ApiRootResource.scala:187) ~[spark-core_2.10-1.6.0.jar:1.6.0]
at org.apache.spark.ui.SparkUI.initialize(SparkUI.scala:70) ~[spark-core_2.10-1.6.0.jar:1.6.0]
at org.apache.spark.ui.SparkUI.<init>(SparkUI.scala:76) ~[spark-core_2.10-1.6.0.jar:1.6.0]
at org.apache.spark.ui.SparkUI$.create(SparkUI.scala:195) ~[spark-core_2.10-1.6.0.jar:1.6.0]
at org.apache.spark.ui.SparkUI$.createLiveUI(SparkUI.scala:146) ~[spark-core_2.10-1.6.0.jar:1.6.0]
at org.apache.spark.SparkContext.<init>(SparkContext.scala:473) ~[spark-core_2.10-1.6.0.jar:1.6.0]
at org.apache.spark.api.java.JavaSparkContext.<init>(JavaSparkContext.scala:59) ~[spark-core_2.10-1.6.0.jar:1.6.0]
at org.vferrer.sparkker.config.SparkConfig.javaSparkContext(SparkConfig.java:28) ~[classes/:na]
at org.vferrer.sparkker.config.SparkConfig$$EnhancerBySpringCGLIB$$b19a91e3.CGLIB$javaSparkContext$0(<generated>) ~[classes/:na]
at org.vferrer.sparkker.config.SparkConfig$$EnhancerBySpringCGLIB$$b19a91e3$$FastClassBySpringCGLIB$$a68aab86.invoke(<generated>) ~[classes/:na]
at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228) ~[spring-core-4.2.4.RELEASE.jar:4.2.4.RELEASE]
at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:318) ~[spring-context-4.2.3.RELEASE.jar:4.2.3.RELEASE]
at org.vferrer.sparkker.config.SparkConfig$$EnhancerBySpringCGLIB$$b19a91e3.javaSparkContext(<generated>) ~[classes/:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_51]

似乎需要向jersey服务器添加依赖项

<dependency>
    <groupId>com.sun.jersey</groupId>
    <artifactId>jersey-server</artifactId>
    <version>1.2</version>
</dependency>

泽西岛
泽西服务器
1.2

您似乎需要向jersey服务器添加依赖项

<dependency>
    <groupId>com.sun.jersey</groupId>
    <artifactId>jersey-server</artifactId>
    <version>1.2</version>
</dependency>

泽西岛
泽西服务器
1.2

使用一个预构建的Spark jar,它已经包含了所有依赖项


你可以找到它。

使用一个预构建的Spark罐子,它已经包含了所有依赖项


您可以找到它。

根据这里的答案,您需要使用Jersey 1,它需要将@Davide Lorenzo MARINO dependency替换为以下内容

<dependency>
     <groupId>com.sun.jersey</groupId>
     <artifactId>jersey-servlet</artifactId>
     <version>1.19</version>
</dependency>

泽西岛

根据这里的答案,您需要使用Jersey 1,它需要将@Davide Lorenzo MARINO依赖项替换为以下内容

<dependency>
     <groupId>com.sun.jersey</groupId>
     <artifactId>jersey-servlet</artifactId>
     <version>1.19</version>
</dependency>

泽西岛

最后,我通过降级到Spark 1.3.1使它运行起来。 我尝试了这里给出的所有建议,但都无济于事

    <!-- Spark -->
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-core_2.10</artifactId>
        <version>1.3.1</version>
        <exclusions>
            <exclusion>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-log4j12</artifactId>
            </exclusion>
            <exclusion>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

org.apache.spark
spark-core_2.10
1.3.1
org.slf4j
slf4j-log4j12
log4j
log4j

尽管如此,我还是不太喜欢这个解决方案。

最后,我通过降级到Spark 1.3.1来运行它。 我尝试了这里给出的所有建议,但都无济于事

    <!-- Spark -->
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-core_2.10</artifactId>
        <version>1.3.1</version>
        <exclusions>
            <exclusion>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-log4j12</artifactId>
            </exclusion>
            <exclusion>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

org.apache.spark
spark-core_2.10
1.3.1
org.slf4j
slf4j-log4j12
log4j
log4j

尽管如此,我还是不太喜欢这个解决方案。

对于我的案例,我在模块的maven依赖项中提供了一个
范围

当试图在本地运行该模块时,
提供的
建议maven不要使用project的类路径加载该类,而是使用
提供的
版本


所以评论说,
provided
dependency out解决了这个问题

在我的案例中,我在模块的maven依赖项中有一个
provided
范围

当试图在本地运行该模块时,
提供的
建议maven不要使用project的类路径加载该类,而是使用
提供的
版本


所以评论说,
提供的
依赖性解决了这个问题

谢谢Davide,我已经试过了,但是使用了Maven建议的1.19版。当我使用1.2.0时,我有了一些进步,但似乎缺少了更多的依赖项。让我用新的错误更新这个问题。谢谢Davide,我已经试过了,但是使用了Maven建议的1.19版本。当我使用1.2.0时,我有了一些进步,但似乎缺少了更多的依赖项。让我用新的错误更新问题。