Nie mogę uruchomić prostego spark
zadania w Scala IDE
(projekcie Maven Spark) zainstalowanym naWindows 7
Dodano zależność Spark Core.
val conf = new SparkConf().setAppName("DemoDF").setMaster("local")
val sc = new SparkContext(conf)
val logData = sc.textFile("File.txt")
logData.count()
Błąd:
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
źródło
źródło
C:\winutils\bin
winutils.exe
środkuC:\winutils\bin
HADOOP_HOME
naC:\winutils
źródło
Obserwuj to:
Utwórz
bin
folder w dowolnym katalogu (do użycia w kroku 3).Pobierz winutils.exe i umieść go w katalogu bin.
Teraz dodaj
System.setProperty("hadoop.home.dir", "PATH/TO/THE/DIR");
swój kod.źródło
jeśli widzimy poniżej problem
następnie wykonaj następujące czynności
źródło
W systemie Windows 10 - należy dodać dwa różne argumenty.
(1) Dodaj nową zmienną i wartość jako - HADOOP_HOME i ścieżkę (np. C: \ Hadoop) w obszarze Zmienne systemowe.
(2) Dodaj / dołącz nowy wpis do zmiennej „Path” jako „C: \ Hadoop \ bin”.
Powyższe zadziałało dla mnie.
źródło
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")"
źródło
Mam ten sam problem podczas wykonywania testów jednostkowych. Znalazłem to obejście:
Poniższe obejście pozwala pozbyć się tej wiadomości:
File workaround = new File("."); System.getProperties().put("hadoop.home.dir", workaround.getAbsolutePath()); new File("./bin").mkdirs(); new File("./bin/winutils.exe").createNewFile();
z: https://issues.cloudera.org/browse/DISTRO-544
źródło
Alternatywnie możesz pobrać
winutils.exe
z GITHub:https://github.com/steveloughran/winutils/tree/master/hadoop-2.7.1/bin
zastąp żądaną
hadoop-2.7.1
wersją i umieść plik wD:\hadoop\bin
System.setProperty("hadoop.home.dir", "D:\\hadoop");
źródło
Ustawienie zmiennej środowiskowej Hadoop_Home we właściwościach systemu nie działa dla mnie. Ale to zrobiło:
źródło
Oprócz wspominania o zmiennej środowiskowej dla
HADOOP_HOME
wC:\winutils
systemie Windows jako , musisz również upewnić się, że jesteś administratorem maszyny. Jeśli tak się nie stanie, a dodanie zmiennych środowiskowych wyświetli monit o podanie poświadczeń administratora (nawet podUSER
zmiennymi), zmienne te będą miały zastosowanie po uruchomieniu wiersza polecenia jako administrator.źródło
Miałem również podobny problem z następującymi szczegółami Java 1.8.0_121, Spark spark-1.6.1-bin-hadoop2.6, Windows 10 i Eclipse Oxygen. Kiedy uruchomiłem WordCount.java w Eclipse używając HADOOP_HOME jako zmiennej systemowej jak wspominałem w poprzednim poście to nie zadziałało to co u mnie zadziałało to -
System.setProperty ("hadoop.home.dir", "ŚCIEŻKA / DO / THE / DIR");
ŚCIEŻKA / DO / THE / DIR / bin = winutils.exe, niezależnie od tego, czy uruchamiasz w Eclipse jako aplikację Java, czy przez spark-submit z cmd przy użyciu
spark-submit --class groupid.artifactid.classname --master local [2] / ścieżka do pliku jar utworzonego przy użyciu maven / ścieżka do pliku testowego demo / ścieżka do polecenia katalogu wyjściowego
Przykład: Przejdź do lokalizacji składowania Spark / home / location / bin i wykonaj wysyłanie iskry, jak wspomniano,
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
źródło
To trudne ... Twój list polecający musi być duży. Na przykład „ C : \ ...”
źródło