java.io.IOException: 在Hadoop的二进制文件中找不到可执行文件 null\bin\winutils.exe。在Windows 7上使用Spark的Eclipse。

9 浏览
0 Comments

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.(Shell.java:293)\n at org.apache.hadoop.util.StringUtils.(StringUtils.java:76)\n at org.apache.hadoop.mapred.FileInputFormat.setInputPaths(FileInputFormat.java:362)\n at org.apache.spark.SparkContext$$anonfun$hadoopFile$1$$anonfun$33.apply(SparkContext.scala:1015)\n at org.apache.spark.SparkContext$$anonfun$hadoopFile$1$$anonfun$33.apply(SparkContext.scala:1015)\n at org.apache.spark.rdd.HadoopRDD$$anonfun$getJobConf$6.apply(HadoopRDD.scala:176)\n at org.apache.spark.rdd.HadoopRDD$$anonfun$getJobConf$6.apply(HadoopRDD.scala:176)\n at scala.Option.map(Option.scala:145)\n at org.apache.spark.rdd.HadoopRDD.getJobConf(HadoopRDD.scala:176)\n at org.apache.spark.rdd.HadoopRDD.getPartitions(HadoopRDD.scala:195)\n at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:239)\n at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:237)\n at scala.Option.getOrElse(Option.scala:120)\n at org.apache.spark.rdd.RDD.partitions(RDD.scala:237)\n at org.apache.spark.rdd.MapPartitionsRDD.getPartitions(MapPartitionsRDD.scala:35)\n at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:239)\n at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:237)\n at scala.Option.getOrElse(Option.scala:120)\n at org.apache.spark.rdd.RDD.partitions(RDD.scala:237)\n at org.apache.spark.SparkContext.runJob(SparkContext.scala:1929)\n at org.apache.spark.rdd.RDD.count(RDD.scala:1143)\n at com.org.SparkDF.FrameDemo$.main(FrameDemo.scala:14)\n at com.org.SparkDF.FrameDemo.main(FrameDemo.scala)

0
0 Comments

问题原因:在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版本)。

0
0 Comments

下载winutils.exe

创建文件夹,例如C:\winutils\bin

将winutils.exe复制到C:\winutils\bin中

设置环境变量HADOOP_HOME为C:\winutils

如果有打开的命令行,请重新启动以使变量生效。

还要将"C:\winutils\bin"添加到"Path"变量中的新条目中。

0
0 Comments

文章标题:解决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的问题。

0