执行spark-shell时的NoClassDefFoundError com.apache.hadoop.fs.FSDataInputStream

Dav*_*vid 36 apache-spark

我已经下载了没有hadoop的预装版本的spark 1.4.0(用户提供的Haddop).当我运行spark-shell命令时,我收到了这个错误:

> Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/fs/
FSDataInputStream
        at org.apache.spark.deploy.SparkSubmitArguments$$anonfun$mergeDefaultSpa
rkProperties$1.apply(SparkSubmitArguments.scala:111)
        at org.apache.spark.deploy.SparkSubmitArguments$$anonfun$mergeDefaultSpa
rkProperties$1.apply(SparkSubmitArguments.scala:111)
        at scala.Option.getOrElse(Option.scala:120)
        at org.apache.spark.deploy.SparkSubmitArguments.mergeDefaultSparkPropert
ies(SparkSubmitArguments.scala:111)
        at org.apache.spark.deploy.SparkSubmitArguments.<init>(SparkSubmitArgume
nts.scala:97)
        at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:106)
        at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.fs.FSDataInputStr
eam
        at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
        ... 7 more
Run Code Online (Sandbox Code Playgroud)

我在互联网上搜索过,据说HADOOP_HOME尚未在spark-env.cmd中设置.但我在spark安装文件夹中找不到spark-env.cmd.我已经跟踪了spark-shell命令,似乎那里没有HADOOP_CONFIG.我试图在环境变量上添加HADOOP_HOME,但它仍然提供相同的异常.

其实我并没有真正使用hadoop.我按照这个问题的建议下载了hadoop作为解决方法

我使用的是Windows 8和scala 2.10.

任何帮助将不胜感激.谢谢.

tih*_*iho 41

Spark的构建名称中的"without Hadoop"具有误导性:它意味着构建不依赖于特定的Hadoop发行版,而不是没有它的情况下运行:用户应指明在何处查找Hadoop(请参阅https:// spark.apache.org/docs/latest/hadoop-provided.html)

解决此问题的一种简洁方法是:

  1. 获取Hadoop Windows二进制文件.理想情况下构建它们,但这很痛苦(有些提示可见:Windows构建/安装错误的Hadoop).否则谷歌一些,例如目前你可以从这里下载2.6.0:http://www.barik.net/archive/2015/01/19/172716/
  2. 创建一个如下所示的spark-env.cmd文件(修改Hadoop路径以匹配您的安装): @echo off set HADOOP_HOME=D:\Utils\hadoop-2.7.1 set PATH=%HADOOP_HOME%\bin;%PATH% set SPARK_DIST_CLASSPATH=<paste here the output of %HADOOP_HOME%\bin\hadoop classpath>
  3. 将这个spark-env.cmd无论是在conf位于同一水平作为你的星火基本文件夹(这可能看起来很怪异)的文件夹,或通过指定的文件夹中SPARK_CONF_DIR的环境变量.


Ham*_* MP 19

我有同样的问题,事实上它在Spark的入门页面上提到了如何处理它:

### in conf/spark-env.sh ###

# If 'hadoop' binary is on your PATH
export SPARK_DIST_CLASSPATH=$(hadoop classpath)

# With explicit path to 'hadoop' binary
export SPARK_DIST_CLASSPATH=$(/path/to/hadoop/bin/hadoop classpath)

# Passing a Hadoop configuration directory
export SPARK_DIST_CLASSPATH=$(hadoop --config /path/to/configs classpath)
Run Code Online (Sandbox Code Playgroud)

如果您想使用自己的hadoop,请按照3个选项中的一个选项,将其复制并粘贴到 spark-env.sh文件中:

1-如果你的PATH上有hadoop

2-你想明确地显示hadoop二进制文件

3-你也可以显示hadoop配置文件夹

http://spark.apache.org/docs/latest/hadoop-provided.html


Jim*_*mes 15

我也有这个问题,

export SPARK_DIST_CLASSPATH=`hadoop classpath`
Run Code Online (Sandbox Code Playgroud)

解决了这个问题.

  • 完全有帮助 (2认同)

Roh*_*ith 5

我试图熟悉火花时遇到了同样的错误.我对错误消息的理解是,虽然spark不需要运行hadoop集群,但它确实需要一些hadoop类.由于我只是玩火花并且不关心使用什么版本的hadoop库,我只是下载了一个预先构建的带有hadoop(2.6)版本的spark二进制文件,并且开始工作正常.


小智 5

操作系统

ENV SPARK_DIST_CLASSPATH="$HADOOP_HOME/etc/hadoop/*:$HADOOP_HOME/share/hadoop/common/lib/*:$HADOOP_HOME/share/hadoop/common/*:$HADOOP_HOME/share/hadoop/hdfs/*:$HADOOP_HOME/share/hadoop/hdfs/lib/*:$HADOOP_HOME/share/hadoop/hdfs/*:$HADOOP_HOME/share/hadoop/yarn/lib/*:$HADOOP_HOME/share/hadoop/yarn/*:$HADOOP_HOME/share/hadoop/mapreduce/lib/*:$HADOOP_HOME/share/hadoop/mapreduce/*:$HADOOP_HOME/share/hadoop/tools/lib/*"
Run Code Online (Sandbox Code Playgroud)

视窗

set SPARK_DIST_CLASSPATH=%HADOOP_HOME%\etc\hadoop\*;%HADOOP_HOME%\share\hadoop\common\lib\*;%HADOOP_HOME%\share\hadoop\common\*;%HADOOP_HOME%\share\hadoop\hdfs\*;%HADOOP_HOME%\share\hadoop\hdfs\lib\*;%HADOOP_HOME%\share\hadoop\hdfs\*;%HADOOP_HOME%\share\hadoop\yarn\lib\*;%HADOOP_HOME%\share\hadoop\yarn\*;%HADOOP_HOME%\share\hadoop\mapreduce\lib\*;%HADOOP_HOME%\share\hadoop\mapreduce\*;%HADOOP_HOME%\share\hadoop\tools\lib\*
Run Code Online (Sandbox Code Playgroud)