【问题标题】:SSH Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/fs/FSDataInputStream线程“主”java.lang.NoClassDefFoundError 中的 SSH 异常:org/apache/hadoop/fs/FSDataInputStream
【发布时间】:2020-02-08 01:51:21
【问题描述】:

我是使用服务器的新手在我的电脑上使用 Apache Spark 没有任何问题。通常我使用 IntelliJ 来运行代码。

我尝试在外部服务器 ssh 中运行项目,但出现错误:

线程“主”java.lang.NoClassDefFoundError 中的异常: org/apache/hadoop/fs/FSDataInputStream 在 org.apache.spark.sql.SparkSession$.org$apache$spark$sql$SparkSession$$assertOnDriver(SparkSession.scala:1086) 在 org.apache.spark.sql.SparkSession$Builder.getOrCreate(SparkSession.scala:902) 在 com.p53.main(p53.java:42) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:498) 在 com.intellij.rt.execution.application.AppMainV2.main(AppMainV2.java:131) 引起:java.lang.ClassNotFoundException: org.apache.hadoop.fs.FSDataInputStream 在 java.net.URLClassLoader.findClass(URLClassLoader.java:381) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:424) 在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 8 更多

当我在终端(/usr/local/spark/bin/spark-shell)中运行时,Spark 运行良好。

我的 pom 依赖项是:

dependencies>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-core_2.11</artifactId>
            <version>2.4.3</version>
        </dependency>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-sql_2.11</artifactId>
            <version>2.4.3</version>
        </dependency>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-mllib_2.11</artifactId>
            <version>2.4.3</version>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-hdfs</artifactId>
            <version>3.2.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-common</artifactId>
            <version>3.2.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-client</artifactId>
            <version>3.2.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-catalyst_2.11</artifactId>
            <version>2.4.3</version>
        </dependency>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-mllib_2.11</artifactId>
            <version>2.4.3</version>
        </dependency>
    </dependencies>

pom 插件:

plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.5.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-jar-plugin</artifactId>
                <version>3.0.2</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <archive>
                        <manifest>
                            <mainClass>Main</mainClass>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
        </plugins>

我知道我做错了什么或缺少什么,但我就是不知道是什么问题。

【问题讨论】:

  • Spark 是针对 Hadoop 2.7 而不是 3.2 构建的,并且它是可传递的,因此您无需在 POM 中提及它
  • 我删除它仍然无法工作,下界 Hadoop 2.7 @cricket_007

标签: java maven apache-spark hadoop


【解决方案1】:

您需要设置 SPARK_DIST_CLASSPATH。

export SPARK_DIST_CLASSPATH=`hadoop classpath`

【讨论】:

  • 类路径是直接下载hadoop还是spark中的Hadoop Jars?谢谢
  • @KarenciaGárate - 火花中的 hadoop 罐子。
  • 我加了这个amd还是有同样的问题。我的 bash 是: export SPARK_HOME/home/kgarate/spark export HADOOP_HOME=/home/kgarate/hadoop export SPARK_DIST_CLASSPATH=/home/kgarate/spark/jars/*
  • 但我也尝试使用自己的 hadoop 类路径 @Jerin
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-29
  • 2013-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-01
相关资源
最近更新 更多