【问题标题】:Why does spark-submit and spark-shell fail with "Failed to find Spark assembly JAR. You need to build Spark before running this program."?为什么 spark-submit 和 spark-shell 失败并显示“无法找到 Spark 程序集 JAR。您需要在运行此程序之前构建 Spark。”?
【发布时间】:2014-12-23 10:50:03
【问题描述】:

我试图运行 spark-submit 并且我得到了 “找不到 Spark 程序集 JAR。 你需要在运行这个程序之前构建 Spark。” 当我尝试运行 spark-shell 时,我得到了同样的错误。 在这种情况下我必须做什么。

【问题讨论】:

  • 需要更多信息。如何打包你的项目?启动 spark-submit 的命令行..
  • 我是通过命令打包的:mvn package

标签: apache-spark


【解决方案1】:

在 Windows 上,我发现如果它安装在路径中有空格的目录 (C:\Program Files\Spark) 中,安装将失败。将其移至根目录或其他没有空格的目录。

【讨论】:

  • 这是最好的答案。接受的答案是显而易见的。
  • 这为我修好了。
  • 如果路径有空间,也可以使用 C:\Progra~1\Spark 设置环境变量。这会工作,它对我有用......
  • 这正是我的问题。谢谢
  • 谢谢。实际上,我登录我的帐户只是为了投票。
【解决方案2】:

您的 Spark 包不包含已编译的 Spark 代码。这就是您从这些脚本spark-submitspark-shell 中收到错误消息的原因。

您必须从the Spark download page 下载“选择包类型”部分中的预构建版本之一。

【讨论】:

  • 我得到了同样的错误,并且已经下载了一个预构建版本的 spark.. 运行 windows
  • @Marin 如果您针对您的问题提出问题,请创建新问题,并描述您的环境(Spark 版本、OS 版本、java 版本等)
【解决方案3】:

尝试先运行 mvn -DskipTests clean package 来构建 Spark。

【讨论】:

    【解决方案4】:

    如果您的 spark 二进制文件位于文件夹名称包含空格的文件夹中(例如,“Program Files (x86)”),则它不起作用。我把它改成“Program_Files”,然后spark_shell命令在cmd中运行。

    【讨论】:

    • 这与 jurban1997(3 个月大)的答案相同。
    【解决方案5】:

    在我的情况下,我在 macOS 系统上安装了 pip3 install pyspark 的 spark,并且由于不正确的 SPARK_HOME 变量导致的错误。当我运行如下命令时它可以工作:

    PYSPARK_PYTHON=python3 SPARK_HOME=/usr/local/lib/python3.7/site-packages/pyspark python3 wordcount.py a.txt
    

    【讨论】:

      【解决方案6】:
      1. 转到SPARK_HOME。请注意,您的 SPARK_HOME 变量不应在末尾包含 /bin。当你像这样将它添加到路径时提及它:export PATH=$SPARK_HOME/bin:$PATH

      2. 运行 export MAVEN_OPTS="-Xmx2g -XX:ReservedCodeCacheSize=1g" 为 maven 分配更多内存。

      3. 运行./build/mvn -DskipTests clean package 并耐心等待。我的系统花了 1 小时 17 分钟才完成这项工作。

      4. 运行./dev/make-distribution.sh --name custom-spark --pip。这仅适用于 python/pyspark。您可以为 Hive、Kubernetes 等添加更多标志。

      运行 pysparkspark-shell 现在将分别启动 pyspark 和 spark。

      【讨论】:

        【解决方案7】:

        只是添加到@jurban1997 答案。

        如果您正在运行 Windows,请确保 SPARK_HOME 和 SCALA_HOME 环境变量设置正确。 SPARK_HOME 应该指向 {SPARK_HOME}\bin\spark-shell.cmd

        【讨论】:

          【解决方案8】:

          如果您已下载二进制文件并遇到此异常

          然后请检查您的 Spark_home 路径是否包含“apache spark”/bin 之类的空格

          只需删除空格即可。

          【讨论】:

          • 哇,这么有用的细节。为什么他们不将其写入文档?
          【解决方案9】:

          对于截至今天 (21.01.2022) 具有预构建版本的 Windows 机器: 为了验证您可能遇到的所有边缘情况,并避免对具体配置不正确的繁琐猜测:

          1. 找到 spark-class2.cmd 并使用文本编辑器将其打开
          2. 通过在命令提示符中键入参数来检查以 callif exists 开头的命令的参数,如下所示:
          3. 打开命令提示符。 (对于 PowerShell,您需要以另一种方式打印 var)
          4. 按原样复制粘贴 %SPARK_HOME%\bin\ 并按 Enter。
          • 如果您在现在显示的路径中看到类似 bin\bin 的内容,则说明您已在环境变量 %SPARK_HOME% 中附加了 /bin。
          1. 现在您必须将 spark/bin 的路径添加到您的 PATH 变量中,否则它将找不到 spark-submit 命令
          2. 尝试并更正此文件中的脚本使用的每个路径变量,您应该一切顺利。
          3. 然后输入 spark-submit ...您现在可能会遇到缺少 hadoop winutils.exe 的问题,您可以转到 get the tool 并将其粘贴到 spark-submit.cmd 所在的位置

          【讨论】:

            【解决方案10】:

            Spark 安装:

            对于Window机器:

            从此站点下载 spark-2.1.1-bin-hadoop2.7.tgz https://spark.apache.org/downloads.html 将您的 spark 文件夹解压缩并粘贴到 C:\ 驱动器并设置环境变量。 如果你没有 Hadoop, 您需要创建 Hadoop 文件夹并在其中创建 Bin 文件夹,然后将 winutils.exe 文件复制并粘贴到其中。 从 [https://codeload.github.com/gvreddy1210/64bit/zip/master][1] 下载 winutils 文件 并将 winutils.exe 文件粘贴到 Hadoop\bin 文件夹中,并为 c:\hadoop\bin 设置环境变量; 在 C:\ 驱动器中创建 temp\hive 文件夹并授予此文件夹的完全权限,例如: C:\Windows\system32>C:\hadoop\bin\winutils.exe chmod 777 /tmp/hive 打开命令提示符首先运行 C:\hadoop\bin> winutils.exe 然后导航到 C:\spark\bin> 运行火花壳

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2017-10-14
              • 1970-01-01
              • 2017-03-27
              • 1970-01-01
              • 2018-10-20
              • 1970-01-01
              相关资源
              最近更新 更多