Je travaille dans PySpark sur un bloc-notes Jupyter (Python 2.7) sous Windows 7. J'ai un RDD de type pyspark.rdd.PipelinedRDD
appelé idSums
. En essayant d'exécuter idSums.saveAsTextFile("Output")
, je reçois le message d'erreur suivant:
Py4JJavaError: An error occurred while calling o834.saveAsTextFile.
: org.Apache.spark.SparkException: Job aborted due to stage failure: Task 1 in stage 33.0 failed 1 times, most recent failure: Lost task 1.0 in stage 33.0 (TID 131, localhost): Java.io.IOException: (null) entry in command string: null chmod 0644 C:\Users\seride\Desktop\Experiments\PySpark\Output\_temporary\0\_temporary\attempt_201611231307_0033_m_000001_131\part-00001
Il ne devrait y avoir aucun problème avec l'objet RDD, à mon avis, car je suis capable d'exécuter d'autres actions sans erreur, par exemple. l'exécution de idSums.collect()
produit la sortie correcte.
En outre, le répertoire Output
est créé (avec tous les sous-répertoires) et le fichier part-00001
est créé, mais sa taille est de 0 octets.
Il vous manque winutils.exe
un binaire hadoop. Selon le système x64 bit/x32 bit, téléchargez le fichier winutils.exe
et définissez votre maison hadoop de manière à ce qu’elle soit pointée.
1ère voie:
1.Télécharger le fichier
2.Créez le dossier hadoop dans votre système ex "C:"
3.Créer un dossier bin dans le répertoire hadoop ex: C:\hadoop\bin
4. coller winutils.exe dans bin ex: C:\hadoop\bin\winuitls.exe
5.Dans les variables utilisateur dans les propriétés système -> Paramètres système avancés
Créer une nouvelle variable Nom: HADOOP_HOME Chemin: C:\hadoop \
2ème manière:
Vous pouvez définir hadoop home directement dans votre programme Java à l’aide de la commande suivante:
System.setProperty ("hadoop.home.dir", "C:\hadoop");
Une exception similaire m'indiquait que je rencontrais un problème d'autorisations lors du chargement d'un modèle intégré dans une autre machine et copié dans mon système Windows alors que mon HADOOP_HOME était défini. Je viens d’exécuter la commande suivante sur mon dossier de modèles -
winutils.exe chmod -R 777 chemin-modèle.
Même procédure que celle décrite ci-dessus par @Hapreet Varma
Winutils.exe vous manque un binaire Hadoop. Selon le système x64 bit/x32 bit, téléchargez le fichier winutils.exe et définissez votre maison hadoop pointant dessus.
1ère voie:
1.Télécharger le fichier
2.Créez le dossier hadoop dans votre système ex "C:"
3.Créer un dossier bin dans le répertoire hadoop ex: C:\hadoop\bin
4. coller winutils.exe dans bin ex: C:\hadoop\bin\winuitls.exe
5.Dans les variables utilisateur dans les propriétés système -> Paramètres système avancés
Créer un nouveau nom de variable: HADOOP_HOME Chemin: C:\hadoop \
2ème manière:
Vous pouvez définir hadoop home directement dans votre programme Java à l’aide de la commande suivante:
System.setProperty ("hadoop.home.dir", "C:\hadoop");
Si vous travaillez dans Eclipse Oxygen, vous devez redémarrer Eclipse après avoir défini la variable dans les propriétés système, sinon cela ne fonctionnera pas. En cas de chemin incorrect, Eclipse indiquera l'emplacement actuel de winutils au début du journal. quelque chose comme ça
2018-05-05 18:27:47 ERREUR Shell: 397 - Impossible de localiser le fichier binaire winutils dans le chemin binaire hadoop
Java.io.IOException: impossible de localiser l'exécutable null\bin\winutils.exe dans les fichiers binaires Hadoop.
Le journal complet des erreurs est ici
2018-05-05 18:27:47 ERROR Shell:397 - 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:379)
at org.Apache.hadoop.util.Shell.getWinUtilsPath(Shell.Java:394)
at org.Apache.hadoop.util.Shell.<clinit>(Shell.Java:387)
at org.Apache.hadoop.util.StringUtils.<clinit>(StringUtils.Java:80)
at org.Apache.hadoop.security.SecurityUtil.getAuthenticationMethod(SecurityUtil.Java:611)
at org.Apache.hadoop.security.UserGroupInformation.initialize(UserGroupInformation.Java:273)
at org.Apache.hadoop.security.UserGroupInformation.ensureInitialized(UserGroupInformation.Java:261)
at org.Apache.hadoop.security.UserGroupInformation.loginUserFromSubject(UserGroupInformation.Java:791)
at org.Apache.hadoop.security.UserGroupInformation.getLoginUser(UserGroupInformation.Java:761)
at org.Apache.hadoop.security.UserGroupInformation.getCurrentUser(UserGroupInformation.Java:634)
at org.Apache.spark.util.Utils$$anonfun$getCurrentUserName$1.apply(Utils.scala:2464)
at org.Apache.spark.util.Utils$$anonfun$getCurrentUserName$1.apply(Utils.scala:2464)
at scala.Option.getOrElse(Option.scala:121)
at org.Apache.spark.util.Utils$.getCurrentUserName(Utils.scala:2464)
at org.Apache.spark.SparkContext.<init>(SparkContext.scala:292)
at org.Apache.spark.SparkContext$.getOrCreate(SparkContext.scala:2486)
at org.Apache.spark.sql.SparkSession$Builder$$anonfun$7.apply(SparkSession.scala:930)
at org.Apache.spark.sql.SparkSession$Builder$$anonfun$7.apply(SparkSession.scala:921)
at scala.Option.getOrElse(Option.scala:121)
at org.Apache.spark.sql.SparkSession$Builder.getOrCreate(SparkSession.scala:921)
at com.dataflair.spark.Wordcount$.main(Wordcount.scala:13)
at com.dataflair.spark.Wordcount.main(Wordcount.scala)