Je ne parviens pas à exécuter un travail spark
simple dans Scala IDE
(projet d'étincelle Maven) installé sur Windows 7
La dépendance du noyau Spark a été ajoutée.
val conf = new SparkConf().setAppName("DemoDF").setMaster("local")
val sc = new SparkContext(conf)
val logData = sc.textFile("File.txt")
logData.count()
Erreur:
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>
Ici est une bonne explication de votre problème avec la solution.
Configurez votre variable d’environnement HADOOP_HOME au niveau du système d’exploitation ou par programme:
System.setProperty ("hadoop.home.dir", "chemin complet du dossier bin avec winutils");
Prendre plaisir
C:\winutils\bin
winutils.exe
dans C:\winutils\bin
HADOOP_HOME
sur C:\winutils
Suivez ceci:
Créez un dossier bin
dans n’importe quel répertoire (à utiliser à l’étape 3).
Téléchargez winutils.exe et placez-le dans le répertoire bin.
Ajoutez maintenant System.setProperty("hadoop.home.dir", "PATH/TO/THE/DIR");
dans votre code.
si nous voyons ci-dessous problème
ERREUR shell: impossible de localiser le fichier binaire winutils dans le chemin binaire hadoop
Java.io.IOException: impossible de localiser le fichier exécutable null\bin\winutils.exe dans les fichiers binaires Hadoop.
puis faites les étapes suivantes
La définition de la variable d’environnement Hadoop_Home dans les propriétés système ne m’a pas fonctionné. Mais cela a:
Vous pouvez également télécharger winutils.exe
à partir de GITHub:
https://github.com/steveloughran/winutils/tree/master/hadoop-2.7.1/bin
remplacez hadoop-2.7.1
par la version de votre choix et placez le fichier dans D:\hadoop\bin
Si vous ne disposez pas de droits d'accès aux paramètres de la variable d'environnement sur votre machine, ajoutez simplement la ligne ci-dessous à votre code:
System.setProperty("hadoop.home.dir", "D:\\hadoop");
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")"
J'ai eu le même problème lors de l'exécution des tests unitaires. J'ai trouvé cette solution de contournement:
La solution de contournement suivante permet de supprimer ce message:
File workaround = new File(".");
System.getProperties().put("hadoop.home.dir", workaround.getAbsolutePath());
new File("./bin").mkdirs();
new File("./bin/winutils.exe").createNewFile();
à partir de: https://issues.cloudera.org/browse/DISTRO-544
Sous Windows 10, vous devez ajouter deux arguments différents.
(1) Ajoutez la nouvelle variable et la valeur sous la forme - HADOOP_HOME et le chemin (c.-à-d. Hadoop) sous Variables système.
(2) Ajoutez/ajoutez une nouvelle entrée à la variable "Path" en tant que "C:\Hadoop\bin".
Ce qui précède a fonctionné pour moi.
En plus de mentionner votre variable d'environnement pour HADOOP_HOME
dans les fenêtres en tant que C:\winutils
, vous devez également vous assurer que vous êtes l'administrateur de la machine. Si ce n'est pas le cas et que l'ajout de variables d'environnement vous invite à saisir vos identifiants d'administration (même sous les variables USER
), ces variables seront applicables une fois que vous aurez lancé l'invite de commande en tant qu'administrateur.
J'ai également rencontré le même problème avec les détails suivants: Java 1.8.0_121, Spark spark-1.6.1-bin-hadoop2.6, Windows 10 et Eclipse Oxygen.Quand j’ai exécuté mon WordCount.Java dans Eclipse en utilisant HADOOP_HOME une variable système comme mentionné dans le post précédent, cela n'a pas fonctionné, ce qui a fonctionné pour moi est -
System.setProperty ("hadoop.home.dir", "PATH/TO/THE/DIR");
PATH/TO/THE/DIR/bin = winutils.exe, que vous exécutiez Eclipse en tant qu’application Java ou par spark-submit à partir de cmd en utilisant
spark-submit --class groupid.artifactid.classname --master local [2]/chemin d'accès au fichier jar créé à l'aide de maven /pathto un fichier de test de démonstration/chemin d'accès au répertoire de sortie
Exemple: Accédez au répertoire bin de Spark/home/location/bin et exécutez le fichier spark-submit comme indiqué.
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
C'est une question délicate ... Votre lettre d'accompagnement doit être écrite. Par exemple "C:\..."