java.io.IOException: no se pudo encontrar el archivo ejecutable null \ bin \ winutils.exe en los archivos binarios de Hadoop. chispa Eclipse en windows 7

No puedo ejecutar un simple trabajo de spark en Scala IDE (proyecto de chispa Maven) instalado en Windows 7

Se ha agregado la dependencia del núcleo Spark.

 val conf = new SparkConf().setAppName("DemoDF").setMaster("local") val sc = new SparkContext(conf) val logData = sc.textFile("File.txt") logData.count() 

Error:

 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.(Shell.java:293) at org.apache.hadoop.util.StringUtils.(StringUtils.java:76) at org.apache.hadoop.mapred.FileInputFormat.setInputPaths(FileInputFormat.java:362) at 
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
org.apache.spark.rdd.HadoopRDD$$anonfun$getJobConf$6.apply(HadoopRDD.scala:176) at
org.apache.spark.rdd.HadoopRDD$$anonfun$getJobConf$6.apply(HadoopRDD.scala:176)
at scala.Option.map(Option.scala:145)
at org.apache.spark.rdd.HadoopRDD.getJobConf(HadoopRDD.scala:176)
at org.apache.spark.rdd.HadoopRDD.getPartitions(HadoopRDD.scala:195)
at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:239)
at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:237)
at scala.Option.getOrElse(Option.scala:120)
at org.apache.spark.rdd.RDD.partitions(RDD.scala:237)
at org.apache.spark.rdd.MapPartitionsRDD.getPartitions(MapPartitionsRDD.scala:35)
at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:239)
at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:237)
at scala.Option.getOrElse(Option.scala:120)
at org.apache.spark.rdd.RDD.partitions(RDD.scala:237)
at org.apache.spark.SparkContext.runJob(SparkContext.scala:1929)
at org.apache.spark.rdd.RDD.count(RDD.scala:1143)
at com.org.SparkDF.FrameDemo$.main(FrameDemo.scala:14)
at com.org.SparkDF.FrameDemo.main(FrameDemo.scala)

Aquí hay una buena explicación de su problema con la solución.

  1. Descargue winutils.exe desde http://public-repo-1.hortonworks.com/hdp-win-alpha/winutils.exe .
  2. Configure su variable de entorno HADOOP_HOME en el nivel del sistema operativo o mediante progtwigción:

    System.setProperty (“hadoop.home.dir”, “ruta completa a la carpeta bin con winutils”);

  3. Disfrutar

  1. Descargar winutils.exe
  2. Crear carpeta, por ejemplo C:\winutils\bin
  3. Copie winutils.exe dentro de C:\winutils\bin
  4. Establezca la variable de entorno HADOOP_HOME en C:\winutils

Sigue esto:

  1. Cree una carpeta bin en cualquier directorio (para ser utilizada en el paso 3).

  2. Descargue winutils.exe y colóquelo en el directorio bin.

  3. Ahora agregue System.setProperty("hadoop.home.dir", "PATH/TO/THE/DIR"); en tu código

si vemos el problema a continuación

ERROR Shell: no se pudo ubicar el winutils binary en el camino binario de hadoop

java.io.IOException: no se pudo encontrar el archivo ejecutable null \ bin \ winutils.exe en los archivos binarios de Hadoop.

luego haz los siguientes pasos

  1. descargue winutils.exe de http://public-repo-1.hortonworks.com/hdp- win-alpha / winutils.exe.
  2. y manténgala en la carpeta bin de cualquier carpeta que hayas creado para.eg C: \ Hadoop \ bin
  3. y en el progtwig agregue la siguiente línea antes de crear SparkContext o SparkConf System.setProperty (“hadoop.home.dir”, “C: \ Hadoop”);

Además de mencionar su variable de entorno para HADOOP_HOME en Windows como C:\winutils , también debe asegurarse de ser el administrador de la máquina. De lo contrario, si agrega variables de entorno y le solicita credenciales de administrador (incluso en las variables de USER ), estas variables se aplicarán una vez que inicie el símbolo del sistema como administrador.

Establecer la variable de entorno Hadoop_Home en las propiedades del sistema no funcionó para mí. Pero esto hizo:

  • Establezca Hadoop_Home en la pestaña de entorno Configuraciones de ejecución de Eclipse.
  • Siga la ‘Configuración del entorno de Windows’ desde aquí

Tengo el mismo problema al ejecutar pruebas unitarias. Encontré esta solución alternativa:

La siguiente solución permite deshacerse de este mensaje:

  File workaround = new File("."); System.getProperties().put("hadoop.home.dir", workaround.getAbsolutePath()); new File("./bin").mkdirs(); new File("./bin/winutils.exe").createNewFile(); 

desde: https://issues.cloudera.org/browse/DISTRO-544

Alternativamente, puede descargar winutils.exe desde GITHub:

https://github.com/steveloughran/winutils/tree/master/hadoop-2.7.1/bin

reemplace hadoop-2.7.1 con la versión que desee y coloque el archivo en D:\hadoop\bin

Si no tiene derechos de acceso a la configuración de variables de entorno en su máquina, simplemente agregue la siguiente línea a su código:

 System.setProperty("hadoop.home.dir", "D:\\hadoop"); 

También me he enfrentado al problema similar con los siguientes detalles Java 1.8.0_121, Spark spark-1.6.1-bin-hadoop2.6, Windows 10 y Eclipse Oxygen. Cuando ejecuté WordCount.java en Eclipse usando HADOOP_HOME como variable de sistema como mencioné en la publicación anterior, no funcionó, lo que funcionó para mí es:

System.setProperty (“hadoop.home.dir”, “RUTA / A / EL / DIR”);

PATH / TO / THE / DIR / bin = winutils.exe si ejecuta dentro de Eclipse como una aplicación Java o mediante spark-submit desde cmd usando

spark-submit –class groupid.artifactid.classname –master local [2] / ruta al archivo jar creado usando maven / path a un archivo de prueba de demo / ruta al comando de salida del directorio

Ejemplo: Vaya a la ubicación del contenedor de Spark / home / location / bin y ejecute el spark-submit como se mencionó,

D: \ BigData \ spark-2.3.0-bin-hadoop2.7 \ bin> spark-submit –clase 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

En Windows 10, debe agregar dos argumentos diferentes.

(1) Agregue la nueva variable y el valor como – HADOOP_HOME y la ruta (es decir, c: \ Hadoop) en Variables del sistema.

(2) Agregue / añada una nueva entrada a la variable “Ruta” como “C: \ Hadoop \ bin”.

Lo anterior funcionó para mí.

Eso es complicado … Su carta de almacenamiento debe ser capical. Por ejemplo ” C : \ …”