2014-07-15 1 views
1

J'utilise HDP 2.0 - Hadoop 2.2.0 et Apache Avro 1.7.4 et followig Guide Avro MapReduce pour un nouveau M/R api hereAvro emploi MapReduce ne java.lang.IncompatibleClassChangeError

J'obtiens l'erreur suivante

2014-07-15 05:46:04,354 FATAL [main] org.apache.hadoop.mapred.YarnChild: Error running child : java.lang.IncompatibleClassChangeError: Found interface org.apache.hadoop.mapreduce.TaskAttemptContext, but class was expected 
    at org.apache.avro.mapreduce.AvroKeyInputFormat.createRecordReader(AvroKeyInputFormat.java:47) 
    at org.apache.hadoop.mapred.MapTask$NewTrackingRecordReader.<init>(MapTask.java:491) 
    at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:734) 
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:339) 
    at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:162) 
    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:1491) 
    at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:157) 

Semble que je suis en train de mélanger l'ancienne et la nouvelle api. Toute proposition? Thx

+0

Non, mélangez des versions de Hadoop. Je suppose que Avro 1.7.4 n'a pas été compilé avec Hadoop 2.2.x. –

+0

Trouvé aussi bien. THX – jaksky

Répondre

1

En fait trouvé la solution au problème. Il est officiellement rapporté here

solution simple - besoin Avro être compilé contre Hadoop 2

<dependency> 
    <groupId>org.apache.avro</groupId> 
    <artifactId>avro-mapred</artifactId> 
    <version>1.7.4</version> 
    <classifier>hadoop2</classifier> 
</dependency> 
0

Pour moi, je résolu le problème en ajoutant classifier:"hapdoop2" à notre fichier build.gradle:

avro_mapred : [group:"org.apache.avro", name:"avro-mapred", version:"1.7.7", classifier:"hadoop2"], 
Questions connexes