2013-01-09 2 views
3

Je voudrais utiliser hadoop C++ pipes pour créer mon code may/reduce. Et les données d'entrée sont binaires, je veux custimize l'inputformat pour contrôler la logique de getSplits ...... mais je ne suis pas sûr si c'est une solution possible. J'ai essayé d'assigner ma classe inputformat personnalisée dans cli mais je n'ai pas réussi à l'exécuter.customFormat, hadoop C++ pipes

../bin/hadoop pipes -conf testframework.xml -input input -output output -inputformat TestInputFormat.class 

i got erreur ci-dessous:

Exception in thread "main" java.lang.ClassNotFoundException: TestInputFormat.class 
     at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
     at java.lang.Class.forName0(Native Method) 
     at java.lang.Class.forName(Class.java:247) 
     at org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:812) 
     at org.apache.hadoop.mapred.pipes.Submitter.getClass(Submitter.java:372) 
     at org.apache.hadoop.mapred.pipes.Submitter.run(Submitter.java:421) 
     at org.apache.hadoop.mapred.pipes.Submitter.main(Submitter.java:494) 

Est-ce que sens?

Répondre

0

Je pense que votre problème est juste le .class à la fin. Mais si vous avez déjà essayé de le supprimer. Tu pourrais essayer ce que j'ai fait pour résoudre ça. J'ai emballé dans un .jar (jar cf libJar.jar packageName). J'ai utilisé -libjars pour y faire référence, et -inputformat packageName.TestInputFormat. J'espère que ça aide.

Modifier 1

Une autre façon est d'utiliser -D mapred.input.format.class=packageName.TestInputFormat