Ich kann keinen einfachen spark
Job in Scala IDE
(Maven Spark-Projekt) ausführen, auf dem installiert istWindows 7
Die Spark-Core-Abhä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>
eclipse
scala
apache-spark
Elvish_Blade
quelle
quelle
C:\winutils\bin
winutils.exe
innenC:\winutils\bin
HADOOP_HOME
aufC:\winutils
quelle
Folge dies:
Erstellen Sie einen
bin
Ordner in einem beliebigen Verzeichnis (zur Verwendung in Schritt 3).Laden Sie winutils.exe herunter und legen Sie es im bin-Verzeichnis ab.
Fügen Sie nun
System.setProperty("hadoop.home.dir", "PATH/TO/THE/DIR");
Ihren Code hinzu.quelle
wenn wir unten Problem sehen
Führen Sie dann die folgenden Schritte aus
quelle
quelle
Unter Windows 10 sollten Sie zwei verschiedene Argumente hinzufügen.
(1) Fügen Sie die neue Variable und den neuen Wert als - HADOOP_HOME und Pfad (dh c: \ Hadoop) unter Systemvariablen hinzu.
(2) Neuen Eintrag zur Variablen "Pfad" als "C: \ Hadoop \ bin" hinzufügen / anhängen.
Das obige hat bei mir funktioniert.
quelle
Ich habe das gleiche Problem beim Ausführen von Unit-Tests. Ich habe diese Problemumgehungslösung gefunden:
Mit der folgenden Problemumgehung können Sie diese Meldung entfernen:
von: https://issues.cloudera.org/browse/DISTRO-544
quelle
Sie können alternativ
winutils.exe
von GITHub herunterladen :https://github.com/steveloughran/winutils/tree/master/hadoop-2.7.1/bin
Ersetzen
hadoop-2.7.1
Sie sie durch die gewünschte Version und platzieren Sie die Datei inD:\hadoop\bin
quelle
Das Festlegen der Umgebungsvariablen Hadoop_Home in den Systemeigenschaften hat bei mir nicht funktioniert. Aber das tat:
quelle
Neben der Erwähnung Ihrer Umgebungsvariablen für
HADOOP_HOME
in Windows asC:\winutils
müssen Sie auch sicherstellen, dass Sie der Administrator des Computers sind. Wenn dies nicht derUSER
Fall ist und Sie durch Hinzufügen von Umgebungsvariablen zur Eingabe von Administratoranmeldeinformationen (auch unter Variablen) aufgefordert werden, sind diese Variablen anwendbar, sobald Sie Ihre Eingabeaufforderung als Administrator starten.quelle
Ich habe das ähnliche Problem auch mit den folgenden Details konfrontiert: Java 1.8.0_121, Spark spark-1.6.1-bin-hadoop2.6, Windows 10 und Eclipse Oxygen. Als ich meine WordCount.java in Eclipse mit HADOOP_HOME als Systemvariable ausführte Wie im vorherigen Beitrag erwähnt, hat es nicht funktioniert. Was für mich funktioniert hat ist -
System.setProperty ("hadoop.home.dir", "PATH / TO / THE / DIR");
PATH / TO / THE / DIR / bin = winutils.exe, unabhängig davon, ob Sie in Eclipse als Java-Anwendung oder per Spark-Submit von cmd mit ausgeführt werden
spark-submit --class groupid.artifactid.classname --master local [2] / Pfad zur JAR-Datei, die mit maven erstellt wurde / Pfad zu einer Demo-Testdatei / Pfad zum Ausgabeverzeichnisbefehl
Beispiel: Gehen Sie zum Bin-Speicherort von Spark / home / location / bin und führen Sie den Spark-Submit wie erwähnt 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 \ Ziel \ spark-quickstart-0.0.1-SNAPSHOT.jar D: \ BigData \ spark-quickstart \ wordcount.txt
quelle
Das ist eine knifflige Angelegenheit ... Ihr Aufbewahrungsbrief muss launisch sein. Zum Beispiel " C : \ ..."
quelle