web-dev-qa-db-fra.com

java.io.IOException: impossible de localiser l'exécutable null\bin\winutils.exe dans les binaires Hadoop. étincelle Eclipse sur Windows 7

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

Ici est une bonne explication de votre problème avec la solution. 

  1. Téléchargez winutils.exe depuis http://public-repo-1.hortonworks.com/hdp-win-alpha/winutils.exe .
  2. 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");

  3. Prendre plaisir

98
Taky
  1. Télécharger winutils.exe
  2. Créer un dossier, par exemple C:\winutils\bin
  3. Copier winutils.exe dans C:\winutils\bin
  4. Définissez la variable d'environnement HADOOP_HOME sur C:\winutils
44
Deokant Gupta

Suivez ceci:

  1. Créez un dossier bin dans n’importe quel répertoire (à utiliser à l’étape 3).

  2. Téléchargez winutils.exe et placez-le dans le répertoire bin.

  3. Ajoutez maintenant System.setProperty("hadoop.home.dir", "PATH/TO/THE/DIR"); dans votre code.

18
Ani Menon

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

  1. téléchargez winutils.exe à partir de http://public-repo-1.hortonworks.com/hdp - / win-alpha/winutils.exe.
  2. et conservez-le dans le dossier bin de tous les dossiers que vous avez créés pour.e.g. C:\Hadoop\bin
  3. et dans le programme, ajoutez la ligne suivante avant de créer SparkContext ou SparkConf System.setProperty ("hadoop.home.dir", "C:\Hadoop");
4
Prem S

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:

  • Définissez Hadoop_Home dans l'onglet d'environnement Eclipse Run Configurations. 
  • Suivez le "Windows Environment Setup" de ici
1
Ramya

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

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

1
Joabe Lucena

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. 

0
user1023627

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.

0
Abhishek Sakhuja

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

0
Abdus Mondal

C'est une question délicate ... Votre lettre d'accompagnement doit être écrite. Par exemple "C:\..."

0
Achilles