gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 07:27:32 27 4
gpt4 key购买 nike

我已经下载了不带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

网上查了一下,据说spark-env.cmd中还没有设置HADOOP_HOME。但我在spark安装文件夹中找不到spark-env.cmd。我跟踪了spark-shell命令,里面似乎没有HADOOP_CONFIG。我尝试在环境变量中添加 HADOOP_HOME 但它仍然给出相同的异常。

其实我并没有真正使用hadoop。我按照 this question 中的建议下载了 hadoop 作为解决方法。

我使用的是 Windows 8 和 scala 2.10。

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

最佳答案

Spark 的构建名称中的“不带 Hadoop”具有误导性:这意味着该构建不依赖于特定的 Hadoop 发行版,并不是说它可以在没有它的情况下运行:用户应该指出在哪里可以找到 Hadoop(请参阅https://spark.apache.org/docs/latest/hadoop-provided.html)

解决此问题的一种干净方法是:

  1. 获取 Hadoop Windows 二进制文件。理想情况下构建它们,但这很痛苦(有关一些提示,请参阅:Hadoop on Windows Building/ Installation Error)。否则谷歌一些,例如目前您可以从这里下载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放入与 Spark 基础文件夹位于同一级别的conf文件夹中(这可能看起来很奇怪),或者放入由SPARK_CONF_DIR环境变量指示的文件夹中。

关于apache-spark - 执行spark-shell时出现NoClassDefFoundError com.apache.hadoop.fs.FSDataInputStream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30906412/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com