mundo - Clase no encontrada en el trabajo de Hadoop
mapreduce java (2)
Tengo un trabajo de reducción de mapa que obtiene su entrada de DocumentDB. He agregado archivos jar bajo el directorio lib en mi código fuente y también uso el -libjars cuando ejecuto el trabajo. pero sigo recibiendo el error de clase no encontrada para una clase en el archivo jar. Aquí hay una parte de mi programa de controlador
public class MapReduceDriver extends Configured implements Tool {
public static void main(String[] args) throws Exception {
int res = ToolRunner.run(new Configuration(), new MapReduceDriver(), args);
System.exit(res);
}
@Override
public int run(String[] args) throws Exception {
Configuration conf = this.getConf();
....
Cuando uso el -libjars, una vez coloqué los archivos jar requeridos en el controlador local y una vez en el hdfs, pero ninguno funcionó. ¿Cómo puedo asegurarme de que funciona el -libjars?
ps Estoy usando clúster HDInsight de 2 nodos (ejecutándose en Microsoft Azure).
Aquí está el mensaje de error que recibo
Error: java.lang.RuntimeException: java.lang.ClassNotFoundException: Class com.microsoft.azure.documentdb.hadoop.DocumentDBInputFormat not found
at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:1961)
at org.apache.hadoop.mapreduce.task.JobContextImpl.getInputFormatClass(JobContextImpl.java:174)
at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:726)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:340)
at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:168)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:415)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1594)
at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:163)
Caused by: java.lang.ClassNotFoundException: Class com.microsoft.azure.documentdb.hadoop.DocumentDBInputFormat not found
at org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:1867)
at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:1959)
... 8 more
HDInsight está utilizando templton que no tiene soporte para libjars, por lo que no puede usar los documentos de templton
Además, supongo que está creando un clúster HDInsight personalizado con un script de powershell. Puede copiar todos los archivos jar con dependencias a HADOOP_HOME + ''/ share / hadoop / common / lib, esto sería la carpeta hadoop lib.
O puede usar directamente el script de powershell publicado al cambiar la ruta que contiene los archivos jar de dependencia (agregar los archivos jar a un bloque azul y simplemente reemplazar la ruta) script powershell
Supongo que se refiere al contenedor de conector DocumentDB Hadoop que se encuentra aquí: https://github.com/Azure/azure-documentdb-hadoop
El jar no incluye dependencias. Puede hacer que maven recupere las dependencias por usted, o manualmente descargar e incluir en la ruta de compilación usted mismo.
Aquí están las dependencias: