赞
踩
使用spark时遇到一个非常难绷的问题
ERROR Shell: Failed to locate the winutils binary in the hadoop binary path
java.io.IOException: Could not locate executable E:\hadoop\spark-3.0.0-bin-hadoop2.7\bin\winutils.exe in the Hadoop binaries.
at org.apache.hadoop.util.Shell.getQualifiedBinPath(Shell.java:382)
at org.apache.hadoop.util.Shell.getWinUtilsPath(Shell.java:397)
at org.apache.hadoop.util.Shell.<clinit>(Shell.java:390)
at org.apache.hadoop.util.StringUtils.<clinit>(StringUtils.java:80)
困扰我2个小时,我一开始以为是Hadoop没有下载问题,就下载了,没用,然后又以为版本问题,又换了spark和Hadoop对应的版本。然而问题没有解决。最后去stackOverFlow才找到解决办法
话不多说,解决方法如下:(注意:无需下载Hadoop)
问题的原因是Winutils.exe 用于运行 SPARK 的 shell 命令。当你需要在不安装Hadoop的情况下运行Spark时,需要这个文件。
步骤如下:
1. 从以下位置下载 hadoop 2.7.1 的 winutils.exe
地址:https://github.com/steveloughran/winutils/blob/master/hadoop-2.7.1/bin/winutils.exe [注意:如果使用单独的 hadoop 版本,请务必下载winutils 来自 GITHUB 上相应 hadoop 版本文件夹,位置如上所述。]【见注解一】
2. 在 C:盘中创建一个文件夹“winutils”。在文件夹“winutils”内创建一个文件夹“bin”,并将 winutils.exe 复制到该文件夹中。因此 winutils.exe 的位置将是**C:\winutils\bin\winutils.exe**
3. 现在,打开环境变量并设置 HADOOP_HOME=C:\winutils [注意:请不要 在HADOOP_HOME中添加\bin,并且无需在 Path 中设置 HADOOP_HOME]
注解一:GitHub上按照所需版本选bin下的winutils.exe
如果有其他情况可以去该帖子看看:
Stack Overflow
最后吐槽一句,spark团队很牛,但是这种小bug太多了,尤其是我用jdk17版本,有些问题只能降低到11或者8才行
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。