it-swarm.com.de

java.io.IOException: Die ausführbare Datei null\bin\winutils.exe konnte in den Hadoop-Binärdateien nicht gefunden werden. Funkenfinsternis unter Windows 7

Ich kann keinen einfachen spark-Job in Scala IDE (Maven-Spark-Projekt) ausführen, das auf Windows 7 installiert ist.

Spark-Kernabhängigkeit wurde hinzugefügt.

val conf = new SparkConf().setAppName("DemoDF").setMaster("local")
val sc = new SparkContext(conf)
val logData = sc.textFile("File.txt")
logData.count()

Error: 

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>
59
Elvish_Blade

Hier ist eine gute Erklärung für Ihr Problem mit der Lösung. 

  1. Laden Sie winutils.exe von http://public-repo-1.hortonworks.com/hdp-win-alpha/winutils.exe herunter.
  2. Setzen Sie Ihre Umgebungsvariable HADOOP_HOME auf Betriebssystemebene oder programmgesteuert:

    System.setProperty ("hadoop.home.dir", "vollständiger Pfad zum Ordner bin mit winutils");

  3. Genießen

98
Taky
  1. Laden Sie winutils.exe herunter
  2. Ordner erstellen, sagen Sie C:\winutils\bin
  3. winutils.exe in C:\winutils\bin kopieren
  4. Setzen Sie die Umgebungsvariable HADOOP_HOME auf C:\winutils.
44
Deokant Gupta

Folge dies:

  1. Erstellen Sie einen bin-Ordner in einem beliebigen Verzeichnis (zur Verwendung in Schritt 3).

  2. Laden Sie winutils.exe herunter und legen Sie es im bin-Verzeichnis ab.

  3. Fügen Sie jetzt System.setProperty("hadoop.home.dir", "PATH/TO/THE/DIR"); in Ihren Code ein.

18
Ani Menon

wenn wir unten sehen, Problem

ERROR Shell: Fehler beim Auffinden der Winutils-Binärdatei im hadoop-Binärpfad

Java.io.IOException: Die ausführbare Datei null\bin\winutils.exe konnte in den Hadoop-Binärdateien nicht gefunden werden.

führen Sie dann die folgenden Schritte aus

  1. laden Sie winutils.exe von http://public-repo-1.hortonworks.com/hdp win-alpha/winutils.exe herunter.
  2. und bewahren Sie dies unter dem bin-Ordner jedes Ordners auf, für den Sie erstellt haben. C:\Hadoop\bin
  3. und im Programm folgende Zeile hinzufügen, bevor SparkContext oder SparkConf erstellt wird System.setProperty ("hadoop.home.dir", "C:\Hadoop");
4
Prem S

Das Festlegen der Umgebungsvariable Hadoop_Home in den Systemeigenschaften hat für mich nicht funktioniert. Aber das tat:

  • Legen Sie Hadoop_Home auf der Umgebungsregisterkarte der Eclipse-Ausführungskonfiguration fest. 
  • Folgen Sie dem 'Windows Environment Setup' von hier
1
Ramya

Sie können alternativ winutils.exe von GITHub herunterladen:

https://github.com/steveloughran/winutils/tree/master/hadoop-2.7.1/bin

ersetzen Sie hadoop-2.7.1 durch die gewünschte Version und platzieren Sie die Datei in D:\hadoop\bin.

Wenn Sie keine Zugriffsrechte auf die Umgebungsvariableneinstellungen haben Fügen Sie auf Ihrem Computer einfach die folgende Zeile zu Ihrem Code hinzu:

System.setProperty("hadoop.home.dir", "D:\\hadoop");
1
Saurabh
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")"
1
Sampat Kumar

Ich habe das gleiche Problem beim Ausführen von Komponententests. Ich habe diese Lösung gefunden:

Die folgende Problemumgehung ermöglicht das Entfernen dieser Nachricht:

    File workaround = new File(".");
    System.getProperties().put("hadoop.home.dir", workaround.getAbsolutePath());
    new File("./bin").mkdirs();
    new File("./bin/winutils.exe").createNewFile();

von: https://issues.cloudera.org/browse/DISTRO-544

1
Joabe Lucena

Unter Windows 10 sollten Sie zwei verschiedene Argumente hinzufügen. 

(1) Fügen Sie die neue Variable und den Wert als - HADOOP_HOME und Pfad (d. H. C:\Hadoop) unter Systemvariablen hinzu.

(2) Fügen Sie der "Path" -Variable einen neuen Eintrag als "C:\Hadoop\bin" hinzu. 

Das obige funktionierte für mich. 

0
user1023627

Zusätzlich zu Ihrer Umgebungsvariablen für HADOOP_HOME in Windows als C:\winutils müssen Sie auch sicherstellen, dass Sie der Administrator des Computers sind. Wenn nicht und durch das Hinzufügen von Umgebungsvariablen Sie zur Eingabe der Administratoranmeldeinformationen aufgefordert werden (auch unter USER-Variablen), sind diese Variablen anwendbar, sobald Sie den Befehl Eingabeaufforderung als Administrator starten.

0

Ich habe auch ein ähnliches Problem mit den folgenden Details gehabt. Java 1.8.0_121, Spark spark-1.6.1-bin-hadoop2.6, Windows 10 und Eclipse Oxygen eine systemvariable wie im vorigen post erwähnt, es hat nicht funktioniert, was für mich funktionierte ist -

System.setProperty ("hadoop.home.dir", "PATH/TO/THE/DIR"); 

PATH/TO/THE/DIR/bin = winutils.exe, unabhängig davon, ob Sie Eclipse als Java-Anwendung oder per Spark-Submit von cmd aus ausführen 

spark-submit --class groupid.artifactid.classname --master local [2]/Pfad zur JAR-Datei, die mit maven /path erstellt wurde, zu einer Demo-Testdatei/Pfad zum Ausgabeverzeichnisbefehl

Beispiel: Wechseln Sie zur Ablageposition von Spark/home/location/bin und führen Sie den Spark-Submit wie angegeben aus.

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

0
Abdus Mondal

Das ist eine heikle Sache ... Ihr Lagerbrief muss einfach sein. Zum Beispiel "C:\..."

0
Achilles