tutorial spark examples example apache-spark

apache-spark - examples - apache spark wikipedia



NoClassDefFoundError com.apache.hadoop.fs.FSDataInputStream cuando ejecuta spark-shell (14)

Debe agregar estos frascos en su código:

  1. common-cli-1.2.jar
  2. hadoop-common-2.7.2.jar

He descargado la versión precompilación de spark 1.4.0 sin hadoop (con Haddop proporcionado por el usuario). Cuando ejecuté el comando spark-shell, recibí este error:

> Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/fs/ FSDataInputStream at org.apache.spark.deploy.SparkSubmitArguments$$anonfun$mergeDefaultSpa rkProperties$1.apply(SparkSubmitArguments.scala:111) at org.apache.spark.deploy.SparkSubmitArguments$$anonfun$mergeDefaultSpa rkProperties$1.apply(SparkSubmitArguments.scala:111) at scala.Option.getOrElse(Option.scala:120) at org.apache.spark.deploy.SparkSubmitArguments.mergeDefaultSparkPropert ies(SparkSubmitArguments.scala:111) at org.apache.spark.deploy.SparkSubmitArguments.<init>(SparkSubmitArgume nts.scala:97) at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:106) at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala) Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.fs.FSDataInputStr eam at java.net.URLClassLoader$1.run(URLClassLoader.java:366) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:425) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:358) ... 7 more

He buscado en Internet, se dice que HADOOP_HOME aún no se ha configurado en spark-env.cmd. Pero no puedo encontrar spark-env.cmd en la carpeta de instalación de spark. He rastreado el comando spark-shell y parece que no hay HADOOP_CONFIG allí. Intenté agregar HADOOP_HOME en la variable de entorno, pero aún da la misma excepción.

En realidad, realmente no uso el hadoop. Descargué hadoop como solución alternativa como se sugiere en esta pregunta

Estoy usando Windows 8 y Scala 2.10.

Cualquier ayuda será apreciada. Gracias.


Ejecute a continuación desde el directorio de su paquete justo antes de ejecutar spark-submit -

export SPARK_DIST_CLASSPATH=`hadoop classpath`


El "sin Hadoop" en el nombre de compilación de Spark es engañoso: significa que la compilación no está vinculada a una distribución específica de Hadoop, no es que esté destinada a ejecutarse sin ella: el usuario debe indicar dónde encontrar Hadoop (consulte https://spark.apache.org/docs/latest/hadoop-provided.html )

Una forma limpia de solucionar este problema es:

  1. Obtenga los binarios de Windows de Hadoop. Idealmente, compílelos, pero esto es doloroso (para algunos consejos, consulte: Hadoop en Windows Building / Error de instalación ). De lo contrario, busque algo de Google, por ejemplo, actualmente puede descargar 2.6.0 desde aquí: http://www.barik.net/archive/2015/01/19/172716/
  2. Cree un archivo spark-env.cmd con este aspecto (modifique la ruta de Hadoop para que coincida con su instalación): @echo off set HADOOP_HOME=D:/Utils/hadoop-2.7.1 set PATH=%HADOOP_HOME%/bin;%PATH% set SPARK_DIST_CLASSPATH=<paste here the output of %HADOOP_HOME%/bin/hadoop classpath>
  3. Coloque este spark-env.cmd en una carpeta conf ubicada en el mismo nivel que la carpeta base de Spark (que puede parecer extraña) o en una carpeta indicada por la variable de entorno SPARK_CONF_DIR .

Encontré el mismo error. Quería instalar spark en mi PC con Windows y, por lo tanto, descargué la versión de spark sin hadoop, ¡pero resulta que necesitas las bibliotecas hadoop! descargue cualquier versión de hadoop spark y configure las variables de entorno.


Finalmente encuentro una solución para eliminar la excepción.

En spark-class2.cmd, agregue:

set HADOOP_CLASS1=%HADOOP_HOME%/share/hadoop/common/* set HADOOP_CLASS2=%HADOOP_HOME%/share/hadoop/common/lib/* set HADOOP_CLASS3=%HADOOP_HOME%/share/hadoop/mapreduce/* set HADOOP_CLASS4=%HADOOP_HOME%/share/hadoop/mapreduce/lib/* set HADOOP_CLASS5=%HADOOP_HOME%/share/hadoop/yarn/* set HADOOP_CLASS6=%HADOOP_HOME%/share/hadoop/yarn/lib/* set HADOOP_CLASS7=%HADOOP_HOME%/share/hadoop/hdfs/* set HADOOP_CLASS8=%HADOOP_HOME%/share/hadoop/hdfs/lib/* set CLASSPATH=%HADOOP_CLASS1%;%HADOOP_CLASS2%;%HADOOP_CLASS3%;%HADOOP_CLASS4%;%HADOOP_CLASS5%;%HADOOP_CLASS6%;%HADOOP_CLASS7%;%HADOOP_CLASS8%;%LAUNCH_CLASSPATH%

Luego, cambie:

"%RUNNER%" -cp %CLASSPATH%;%LAUNCH_CLASSPATH% org.apache.spark.launcher.Main %* > %LAUNCHER_OUTPUT%

a :

"%RUNNER%" -Dhadoop.home.dir=*hadoop-installation-folder* -cp %CLASSPATH% %JAVA_OPTS% %*

Funciona bien conmigo, pero no estoy seguro de que esta sea la mejor solución.


Ingrese a SPARK_HOME -> conf

copie el archivo spark-env.sh.template y cámbiele el nombre a spark-env.sh. Dentro de este archivo puede establecer los parámetros para spark.


Me encontré con el mismo error al tratar de familiarizarme con la chispa. Comprendo el mensaje de error es que, si bien spark no necesita un clúster hadoop para ejecutarse, sí necesita algunas de las clases hadoop. Como solo estaba jugando con spark y no me importaba qué versión de las bibliotecas de hadoop se utilizan, descargué un binario de spark preconstruido con una versión de hadoop (2.6) y las cosas comenzaron a funcionar bien.


Muchas gracias. Eso funcionó muy bien, pero también tuve que agregar los tarros de chispa al classpath:; c: / spark / lib * Además, a la última línea del archivo cmd le falta la palabra "echo"; entonces debería decir: echo% SPARK_CMD%


Recibí este error porque el archivo fue copiado de Windows. Resuélvelo usando

dos2unix file_name


Tuve el mismo problema ... Excepción en el hilo "main" java.lang.NoClassDefFoundError: org / apache / hadoop / fs / FSDataInputStream en org.apache.spark.deploy.SparkSubmitArguments $$ anonfun $ mergeDefaultSpa rkProperties $ 1.apply ( SparkSubmitArguments.scala: 111) ... Luego me di cuenta de que había instalado la versión de chispa sin hadoop. Instalé la versión "con hadoop", el problema desapareció.


Tuve el mismo problema, de hecho, se menciona en la página de inicio de Spark cómo manejarlo:

### in conf/spark-env.sh ### # If ''hadoop'' binary is on your PATH export SPARK_DIST_CLASSPATH=$(hadoop classpath) # With explicit path to ''hadoop'' binary export SPARK_DIST_CLASSPATH=$(/path/to/hadoop/bin/hadoop classpath) # Passing a Hadoop configuration directory export SPARK_DIST_CLASSPATH=$(hadoop --config /path/to/configs classpath)

Si desea utilizar su propio hadoop, siga una de las 3 opciones, cópielo y péguelo en el archivo spark-env.sh :

1- si tienes el hadoop en tu RUTA

2- quieres mostrar el binario hadoop explícitamente

3- también puedes mostrar la carpeta de configuración de hadoop

http://spark.apache.org/docs/latest/hadoop-provided.html


Yo también tuve el problema

export SPARK_DIST_CLASSPATH=`hadoop classpath`

resuelto el problema.


linux

ENV SPARK_DIST_CLASSPATH="$HADOOP_HOME/etc/hadoop/*:$HADOOP_HOME/share/hadoop/common/lib/*:$HADOOP_HOME/share/hadoop/common/*:$HADOOP_HOME/share/hadoop/hdfs/*:$HADOOP_HOME/share/hadoop/hdfs/lib/*:$HADOOP_HOME/share/hadoop/hdfs/*:$HADOOP_HOME/share/hadoop/yarn/lib/*:$HADOOP_HOME/share/hadoop/yarn/*:$HADOOP_HOME/share/hadoop/mapreduce/lib/*:$HADOOP_HOME/share/hadoop/mapreduce/*:$HADOOP_HOME/share/hadoop/tools/lib/*"

ventanas

set SPARK_DIST_CLASSPATH=%HADOOP_HOME%/etc/hadoop/*;%HADOOP_HOME%/share/hadoop/common/lib/*;%HADOOP_HOME%/share/hadoop/common/*;%HADOOP_HOME%/share/hadoop/hdfs/*;%HADOOP_HOME%/share/hadoop/hdfs/lib/*;%HADOOP_HOME%/share/hadoop/hdfs/*;%HADOOP_HOME%/share/hadoop/yarn/lib/*;%HADOOP_HOME%/share/hadoop/yarn/*;%HADOOP_HOME%/share/hadoop/mapreduce/lib/*;%HADOOP_HOME%/share/hadoop/mapreduce/*;%HADOOP_HOME%/share/hadoop/tools/lib/*


para mi caso

ejecutar el trabajo de chispa localmente difiere de ejecutarlo en el clúster. en el clúster, puede tener una dependencia / contexto diferente a seguir. así que esencialmente en su pom.xml puede tener dependencias declaradas como provided .

cuando se ejecuta localmente, no necesita estas dependencias provided . simplemente descomentarlos y reconstruir de nuevo.