java.io.IOException: 在Hadoop的二进制文件中找不到可执行文件 null\bin\winutils.exe。在Windows 7上使用Spark的Eclipse。
java.io.IOException: 在Hadoop的二进制文件中找不到可执行文件 null\bin\winutils.exe。在Windows 7上使用Spark的Eclipse。
我无法在安装在Windows 7上的Scala IDE(Maven Spark项目)中运行一个简单的Spark作业。\n已添加了Spark核心依赖项。\n错误:\n16/02/26 18:29:33 INFO SparkContext: 从FrameDemo.scala:13的textFile创建了广播0\n16/02/26 18:29:34 ERROR Shell: 无法在Hadoop二进制路径中找到winutils二进制文件\njava.io.IOException: 无法在Hadoop二进制文件中找到可执行文件null\\bin\\winutils.exe。\n at org.apache.hadoop.util.Shell.getQualifiedBinPath(Shell.java:278)\n at org.apache.hadoop.util.Shell.getWinUtilsPath(Shell.java:300)\n at org.apache.hadoop.util.Shell.
问题原因:在Windows 7上使用Spark Eclipse时,出现了java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries错误。这个错误是由于缺少winutils.exe文件导致的。
解决方法:
1. 在任何目录下创建一个名为"bin"的文件夹(用于后续步骤)。
2. 下载winutils.exe文件,并将其放置在bin文件夹中。下载地址为:http://public-repo-1.hortonworks.com/hdp-win-alpha/winutils.exe。
3. 在代码中添加以下代码:
System.setProperty("hadoop.home.dir", "PATH/TO/THE/DIR");
注意,这里的路径不应包含"bin"文件夹。例如,如果winutils.exe文件所在路径为"D://Hadoop//bin//winutils.exe",则hadoop.home.dir的路径应为"D://Hadoop"。
感谢,这正是我在寻找的解决方法。
需要注意的是,指定的路径不应包含"bin"文件夹。例如,如果winutils.exe文件所在路径为"D://Hadoop//bin//winutils.exe",则hadoop.home.dir的路径应为"D://Hadoop"。
你好,我按照上述步骤操作,但是出现了以下警告:WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
(PS:我在Pycharm中使用的是Pyspark 2.4.4版本)。
文章标题:解决spark在windows 7上运行时的java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries问题
文章正文:
在使用spark在windows 7上运行时,可能会遇到java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries的问题。下面是解决这个问题的原因和方法。
解决方法如下:
1. 从https://github.com/steveloughran/winutils下载适合的winutils.exe版本。
2. 在操作系统级别或者程序中设置HADOOP_HOME环境变量:
System.setProperty("hadoop.home.dir", "winutils所在文件夹的完整路径");
3. 完成以上设置后,问题将得到解决。
另外,需要注意将HADOOP_HOME设置为hadoop文件夹而不是bin文件夹。同时,确保根据spark编译的hadoop版本下载正确的winutils.exe版本。可以在https://github.com/steveloughran/winutils这个github仓库中找到正确的winutils.exe版本。请选择与从官方网站下载的Spark .tgz包相同版本的winutils.exe。这样做可以避免后续的麻烦。
通过以上方法,可以解决java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries的问题。