No puedo ejecutar un spark
trabajo simple en Scala IDE
(proyecto Maven Spark) instalado enWindows 7
Se ha agregado la dependencia del núcleo de 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.<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>
eclipse
scala
apache-spark
Elvish_Blade
fuente
fuente
C:\winutils\bin
winutils.exe
adentroC:\winutils\bin
HADOOP_HOME
enC:\winutils
fuente
Sigue esto:
Cree una
bin
carpeta en cualquier directorio (que se utilizará en el paso 3).Descargue winutils.exe y colóquelo en el directorio bin.
Ahora agregue
System.setProperty("hadoop.home.dir", "PATH/TO/THE/DIR");
su código.fuente
si vemos el problema a continuación
luego sigue los siguientes pasos
fuente
En Windows 10, debe agregar dos argumentos diferentes.
(1) Agregue la nueva variable y valor como - HADOOP_HOME y la ruta (es decir, c: \ Hadoop) en Variables del sistema.
(2) Agregue / agregue una nueva entrada a la variable "Ruta" como "C: \ Hadoop \ bin".
Lo anterior funcionó para mí.
fuente
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")"
fuente
Tengo el mismo problema al ejecutar pruebas unitarias. Encontré esta solución alternativa:
La siguiente solución alternativa 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();
de: https://issues.cloudera.org/browse/DISTRO-544
fuente
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 enD:\hadoop\bin
System.setProperty("hadoop.home.dir", "D:\\hadoop");
fuente
Establecer la variable de entorno Hadoop_Home en las propiedades del sistema no funcionó para mí. Pero esto hizo:
fuente
Además de mencionar su variable de entorno
HADOOP_HOME
en Windows comoC:\winutils
, también debe asegurarse de ser el administrador de la máquina. Si no es así, y agregar variables de entorno le solicita las credenciales de administrador (incluso en lasUSER
variables), estas variables serán aplicables una vez que inicie su símbolo del sistema como administrador.fuente
También me he enfrentado a un 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é mi WordCount.java en Eclipse usando HADOOP_HOME como variable del sistema como se mencionó en la publicación anterior, no funcionó, lo que funcionó para mí es -
System.setProperty ("hadoop.home.dir", "RUTA / HACIA / EL / DIR");
PATH / TO / THE / DIR / bin = winutils.exe ya sea que se ejecute 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 / ruta a un archivo de prueba de demostración / ruta al comando de directorio de salida
Ejemplo: vaya a la ubicación del contenedor de Spark / home / location / bin y ejecute el envío de chispa como se mencionó,
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 \ destino \ spark-quickstart-0.0.1-SNAPSHOT.jar D: \ BigData \ spark-quickstart \ wordcount.txt
fuente
Eso es complicado ... Tu carta de almacenamiento debe ser capical. Por ejemplo, " C : \ ..."
fuente