Je sais qu'il existe un article très similaire à celui-ci ( Impossible de localiser le fichier binaire winutils dans le chemin binaire hadoop ), cependant, j'ai essayé toutes les étapes suggérées et la même erreur apparaît toujours.
J'essaie d'utiliser Apache Spark version 1.6.0 sous Windows 7 pour effectuer le didacticiel de cette page http://spark.Apache.org/docs/latest/streaming-programming-guide.html , en particulier en utilisant ce code:
./bin/run-example streaming.JavaNetworkWordCount localhost 9999
Cependant, cette erreur continue à apparaître:
Après avoir lu cet article Impossible de localiser le fichier binaire winutils dans le chemin binaire hadoop
J'ai réalisé que j'avais besoin du fichier winutils.exe. J'ai donc téléchargé un binaire hadoop 2.6.0 avec celui-ci et défini une variable d'environnement appelée HADOOP_HOME:
with value C:\Users\GERAL\Desktop\hadoop-2.6.0\bin
et l'a placé sur le chemin comme ceci:% HADOOP_HOME%
Pourtant, la même erreur apparaît encore lorsque j'essaie le code. Quelqu'un sait-il comment résoudre ceci?
Si vous utilisez Spark sous Windows avec Hadoop, vous devez vous assurer que votre installation de Windows Hadoop est correctement installée. Pour exécuter spark, vous devez disposer de winutils.exe et winutils.dll dans votre dossier bin du répertoire de base hadoop.
Je vous demanderais d'essayer d'abord ceci:
1) Vous pouvez télécharger les fichiers .dll et .exe à partir du fichier ci-dessous.
https://codeload.github.com/sardetushar/hadooponwindows/Zip/master
2) Copiez winutils.exe et winutils.dll de ce dossier dans votre $ HADOOP_HOME/bin.
3) Définissez le HADOOP_HOME
dans votre fichier spark-env.sh ou dans la commande, puis ajoutez HADOOP_HOME/bin
à PATH
.
et puis essayez de courir.
Si vous avez besoin d'aide pour installer Hadoop, il existe un lien Nice, vous pouvez l'essayer.
http://toodey.com/2015/08/10/hadoop-installation-on-windows-without-cygwin-in-10-mints/
Mais ça peut attendre. vous pouvez essayer les premières étapes.
Téléchargez le fichier bin d'ici Hadoop Bin then System.setProperty("hadoop.home.dir", "Desktop\bin");
vous pouvez essayer de définir la variable d'environnement HADOOP_HOME sur:
C:\Users\GERAL\Desktop\hadoop-2.6.0
au lieu de
C:\Users\GERAL\Desktop\hadoop-2.6.0\bin
J'ai moi aussi été confronté à ce problème lorsque j'ai essayé d'allumer spark-shell à partir de mon ordinateur portable Windows. J'ai résolu ceci et cela a fonctionné pour moi, j'espère que cela m'aidera. C'est une très petite erreur que j'ai faite - j'ai sauvegardé l'exécutable de winutils sous le nom "winutils.exe" au lieu de winutils.
Ainsi, lorsque la variable est résolue, il a été résolu de winutils.exe.exe qui n’est nulle part dans les binaires Hadoop. J'ai supprimé ce ".exe" et déclenché le shell, cela a fonctionné. Je vous suggère de regarder le nom où il a été enregistré.
L'erreur suivante est due à l'absence du binaire winutils dans le chemin d'accès aux classes lors de l'exécution de l'application Spark. Winutils fait partie de l'écosystème Hadoop et n'est pas inclus dans Spark. La fonctionnalité réelle de votre application peut s'exécuter correctement même après la levée de l'exception. Mais il est préférable de le mettre en place pour éviter des problèmes inutiles. Pour éviter les erreurs, téléchargez le fichier binaire winutils.exe
et ajoutez-le au chemin de classe.
import org.Apache.spark.SparkConf;
import org.Apache.spark.api.Java.JavaRDD;
import org.Apache.spark.api.Java.JavaSparkContext;
import org.Apache.spark.api.Java.function.Function;
public class SparkTestApp{
public static void main(String[] args) {
System.setProperty("hadoop.home.dir", "ANY_DIRECTORY");
// Example
// winutils.exe is copied to C:\winutil\bin\
// System.setProperty("hadoop.home.dir", "C:\\winutil\\");
String logFile = "C:\\sample_log.log";
SparkConf conf = new SparkConf().setAppName("Simple Application").setMaster("local");
JavaSparkContext sc = new JavaSparkContext(conf);
JavaRDD logData = sc.textFile(logFile).cache();
long numAs = logData.filter(new Function<String, Boolean>() {
public Boolean call(String s) {
return s.contains("a");
}
}).count();
System.out.println("Lines with a: " + numAs);
}
}
Si winutils.exe
est copié dans C:\winutil\bin\
puis setProperty comme ci-dessous
System.setProperty("hadoop.home.dir", "C:\\winutil\\");