2017-09-07 2 views
0

Essayez d'exécuter un code mapreduce simple qui lit les données d'un fichier RCFile.Impossible de se débarrasser de java.lang.ClassNotFoundException: Classe org.apache.hadoop.hive.ql.io.RCFileInputFormat

Je suis en cours d'exécution du code en utilisant la commande Hadoop:

hadoop jar MRJobRCFile.jar MRJobRCFile <inputRCfile> <outputfile> 

Inspite d'ajouter pot de ruche-exec pour Hadoop classpath, obtenir cette erreur.

export HADOOP_CLASSPATH=/opt/cmr/hadoopinstall/hive-0.10.0-cdh4.4.0/lib/hive-exec-0.10.0-cdh4.4.0.jar 

Comment puis-je ajouter le pot?

Essayé vérifier les pots chargés en utilisant jvm bavard: Classe:

[org.apache.hadoop.hive.ql.io.RCFileInputFormat chargé du fichier: /opt/cmr/hadoopinstall/hive-0.10.0 -cdh4.4.0/lib/hive-exec-0.10.0-cdh4.4.0.jar]

RCFileInputFormat est en cours de chargement par JVM.

Une idée de la façon de procéder à ce problème? Erreur:

java.lang.RuntimeException: java.lang.RuntimeException: java.lang.ClassNotFoundException: Class org.apache.hadoop.hive.ql.io.RCFileInputFormat not found 
at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:1649) 
at org.apache.hadoop.mapred.JobConf.getInputFormat(JobConf.java:620) 
at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:394) 
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:332) 
at org.apache.hadoop.mapred.Child$4.run(Child.java:268) 
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:1408) 
at org.apache.hadoop.mapred.Child.main(Child.java:262) 
Caused by: java.lang.RuntimeException: java.lang.ClassNotFoundException: Class org.apache.hadoop.hive.ql.io.RCFileInputFormat not found 
    at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:1617) 
    at org.apache.hadoop.conf.Configuration.getClass(Configuration.java 
+0

Le fichier jar est le fichier hive jar de cloudera, alors que le chemin semble provenir d'apache hive. Pouvez-vous vérifier quel jar définit la dépendance au moment de la compilation? –

+0

@PreetiKhurana: J'ai résolu ce problème en ajoutant le Hive-exec à HADOOP_CLASSPATH ainsi qu'en ajoutant le JAR au cache distribué. –

Répondre

0

résolu en ajoutant le pot de ruche-exec pour HADOOP_CLASSPATH et le cache distribué. L'ajout du cache au cache distribué consiste à les mettre à la disposition de la mappe distante et à réduire les tâches des JVM. Et ajouter dans HADOOP_CLASSPATH est pour le client JVM (créé par la commande hadoop jar).