Java.io.IOException: Не удалось найти исполняемый файл null\bin\winutils.exe в двоичных файлах Hadoop. искра Eclipse на окнах 7
Я не могу запустить простое задание spark
в Scala IDE
(искровой проект Maven), установленный на Windows 7
Добавлена зависимость ядра Spark.
val conf = new SparkConf().setAppName("DemoDF").setMaster("local")
val sc = new SparkContext(conf)
val logData = sc.textFile("File.txt")
logData.count()
Ошибка:
16/02/26 18:29:33 INFO SparkContext: Created broadcast 0 from textFile at FrameDemo.scala:13
16/02/26 18:29:34 ERROR Shell: Failed to locate the winutils binary in the hadoop binary path
java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.
at org.apache.hadoop.util.Shell.getQualifiedBinPath(Shell.java:278)
at org.apache.hadoop.util.Shell.getWinUtilsPath(Shell.java:300)
at org.apache.hadoop.util.Shell.<clinit>(Shell.java:293)
at org.apache.hadoop.util.StringUtils.<clinit>(StringUtils.java:76)
at org.apache.hadoop.mapred.FileInputFormat.setInputPaths(FileInputFormat.java:362)
at <br>org.apache.spark.SparkContext$$anonfun$hadoopFile$1$$anonfun$33.apply(SparkContext.scala:1015)
at org.apache.spark.SparkContext$$anonfun$hadoopFile$1$$anonfun$33.apply(SparkContext.scala:1015)
at <br>org.apache.spark.rdd.HadoopRDD$$anonfun$getJobConf$6.apply(HadoopRDD.scala:176)
at <br>org.apache.spark.rdd.HadoopRDD$$anonfun$getJobConf$6.apply(HadoopRDD.scala:176)<br>
at scala.Option.map(Option.scala:145)<br>
at org.apache.spark.rdd.HadoopRDD.getJobConf(HadoopRDD.scala:176)<br>
at org.apache.spark.rdd.HadoopRDD.getPartitions(HadoopRDD.scala:195)<br>
at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:239)<br>
at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:237)<br>
at scala.Option.getOrElse(Option.scala:120)<br>
at org.apache.spark.rdd.RDD.partitions(RDD.scala:237)<br>
at org.apache.spark.rdd.MapPartitionsRDD.getPartitions(MapPartitionsRDD.scala:35)<br>
at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:239)<br>
at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:237)<br>
at scala.Option.getOrElse(Option.scala:120)<br>
at org.apache.spark.rdd.RDD.partitions(RDD.scala:237)<br>
at org.apache.spark.SparkContext.runJob(SparkContext.scala:1929)<br>
at org.apache.spark.rdd.RDD.count(RDD.scala:1143)<br>
at com.org.SparkDF.FrameDemo$.main(FrameDemo.scala:14)<br>
at com.org.SparkDF.FrameDemo.main(FrameDemo.scala)<br>
Ответы
Ответ 1
Вот хорошее объяснение вашей проблемы с решением.
- Загрузите файл winutils.exe с веб-сайта http://public-repo-1.hortonworks.com/hdp-win-alpha/winutils.exe.
-
Установите переменную среды HADOOP_HOME на уровне операционной системы или программно:
System.setProperty("hadoop.home.dir", "полный путь к папке с winutils");
-
наслаждаться
Ответ 2
- Загрузить winutils.exe
- Создать папку, скажем
C:\winutils\bin
- Скопировать
winutils.exe
внутри C:\winutils\bin
- Установить переменную окружения
HADOOP_HOME
в C:\winutils
Ответ 3
Следуйте этому:
-
Создайте папку bin
в любом каталоге (для использования на шаге 3).
-
Загрузите winutils.exe и поместите его в каталог bin.
-
Теперь добавьте System.setProperty("hadoop.home.dir", "PATH/TO/THE/DIR");
в свой код.
Ответ 4
если мы увидим ниже вопрос
Сбой ERROR: не удалось найти двоичный файл winutils в двоичном пути hadoop
java.io.IOException: Не удалось найти исполняемый файл null\bin\winutils.exe в двоичных файлах Hadoop.
выполните следующие шаги
- загрузить winutils.exe из http://public-repo-1.hortonworks.com/hdp-
обоюдного альфа /winutils.exe.
- и сохраните это под папкой bin любой папки, которую вы создали для. C:\Hadoop\Bin
- и в программе добавьте следующую строку перед созданием SparkContext или SparkConf
System.setProperty( "hadoop.home.dir", "C:\Hadoop" );
Ответ 5
Установка переменной среды Hadoop_Home в свойствах системы не помогла мне. Но это произошло:
- Задайте Hadoop_Home на вкладке среды конфигурации Eclipse Run Configurations.
- Следуйте "Настройка среды Windows" из здесь
Ответ 6
У меня такая же проблема при запуске юнит-тестов. Я нашел это обходное решение:
Следующий обходной путь позволяет избавиться от этого сообщения:
File workaround = new File(".");
System.getProperties().put("hadoop.home.dir", workaround.getAbsolutePath());
new File("./bin").mkdirs();
new File("./bin/winutils.exe").createNewFile();
от: https://issues.cloudera.org/browse/DISTRO-544
Ответ 7
Вы также можете скачать winutils.exe
с GITHub:
https://github.com/steveloughran/winutils/tree/master/hadoop-2.7.1/bin
замените hadoop-2.7.1
на hadoop-2.7.1
вам версию и поместите файл в D:\hadoop\bin
Если у вас нет прав доступа к настройкам переменных среды на вашем компьютере, просто добавьте следующую строку в ваш код:
System.setProperty("hadoop.home.dir", "D:\\hadoop");
Ответ 8
1) Download winutils.exe from https://github.com/steveloughran/winutils
2) Create a directory In windows "C:\winutils\bin
3) Copy the winutils.exe inside the above bib folder .
4) Set the environmental property in the code
System.setProperty("hadoop.home.dir", "file:///C:/winutils/");
5) Create a folder "file:///C:/temp" and give 777 permissions.
6) Add config property in spark Session ".config("spark.sql.warehouse.dir", "file:///C:/temp")"
Ответ 9
Помимо упоминания вашей переменной окружения для HADOOP_HOME
в окнах C:\winutils
, вам также необходимо убедиться, что вы являетесь администратором машины. Если нет, и добавление переменных среды запрашивает у вас учетные данные администратора (даже под переменными USER
), то эти переменные будут применяться после запуска командной строки как администратора.
Ответ 10
Я также столкнулся с подобной проблемой со следующими подробностями: Java 1.8.0_121, Spark spark-1.6.1-bin-hadoop2.6, Windows 10 и Eclipse Oxygen. Когда я запускал свой WordCount.java в Eclipse, используя HADOOP_HOME в качестве системной переменной как уже упоминалось в предыдущем посте, это не сработало, что у меня сработало -
System.setProperty("hadoop.home.dir", "PATH/TO/THE/DIR");
PATH/TO/THE/DIR/bin = winutils.exe, запускаете ли вы в Eclipse как приложение Java или с помощью spark-submit из cmd, используя
spark-submit --class groupid.artifactid.classname --master local [2]/путь к файлу jar, созданному с помощью maven/path к файлу демо-теста/путь к команде выходного каталога
Пример: перейдите в папку bin Spark/home/location/bin и выполните spark-submit, как указано выше,
D:\BigData\spark-2.3.0-bin-hadoop2.7\bin> spark-submit --class com.bigdata.abdus.sparkdemo.WordCount --master local [1] D:\BigData\spark-quickstart\target\spark-quickstart-0.0.1-SNAPSHOT.jar D:\BigData\spark-quickstart\wordcount.txt
Ответ 11
На Windows 10 - вы должны добавить два разных аргумента.
(1) Добавьте новую переменную и значение как - HADOOP_HOME и путь (например, c:\Hadoop) в разделе Системные переменные.
(2) Добавить/добавить новую запись в переменную "Путь" как "C:\Hadoop\bin".
Вышесказанное сработало для меня.
Ответ 12
Это сложно... Ваше письмо должно быть забавным. Например, " C :\..."