[ https://issues.apache.org/jira/browse/CASSANDRA-5201?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13919107#comment-13919107 ]
Henning Kropp commented on CASSANDRA-5201: ------------------------------------------ I might be missing an important point, but Hadoop-Compat is nothing other than ContextUtil of hadoop2? It uses reflection to test what's on the classpath to decide how or better what to return. I made it work with just using ContextUtil before I found this patch here. Therefor the binary works fine for both (btw I would not consider it legacy!), if you manage the dependencies on your own. But if you would start a new project you would import Cassandra for example like this: {code} dependencies { ... compile 'org.apache.cassandra:cassandra:2.0.6' ... } {code} What will happen now is, that this will load hadoop1 dependencies into my hadoop2 project for example, or not? To avoid this maven classifiers could be used, to call explicitly for hadoop2 dependencies: {code} dependencies { .... compile 'org.apache.cassandra:cassandra:2.0.6:hadoop2' ... } {code} > Cassandra/Hadoop does not support current Hadoop releases > --------------------------------------------------------- > > Key: CASSANDRA-5201 > URL: https://issues.apache.org/jira/browse/CASSANDRA-5201 > Project: Cassandra > Issue Type: Bug > Components: Hadoop > Affects Versions: 1.2.0 > Reporter: Brian Jeltema > Assignee: Benjamin Coverston > Fix For: 2.0.6 > > Attachments: 5201_a.txt, hadoopCompat.patch, > hadoopcompat-trunk.patch, progressable-fix.patch > > > Using Hadoop 0.22.0 with Cassandra results in the stack trace below. > It appears that version 0.21+ changed org.apache.hadoop.mapreduce.JobContext > from a class to an interface. > Exception in thread "main" java.lang.IncompatibleClassChangeError: Found > interface org.apache.hadoop.mapreduce.JobContext, but class was expected > at > org.apache.cassandra.hadoop.ColumnFamilyInputFormat.getSplits(ColumnFamilyInputFormat.java:103) > at > org.apache.hadoop.mapreduce.JobSubmitter.writeNewSplits(JobSubmitter.java:445) > at > org.apache.hadoop.mapreduce.JobSubmitter.writeSplits(JobSubmitter.java:462) > at > org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:357) > at org.apache.hadoop.mapreduce.Job$2.run(Job.java:1045) > at org.apache.hadoop.mapreduce.Job$2.run(Job.java:1042) > 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:1153) > at org.apache.hadoop.mapreduce.Job.submit(Job.java:1042) > at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:1062) > at MyHadoopApp.run(MyHadoopApp.java:163) > at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:69) > at MyHadoopApp.main(MyHadoopApp.java:82) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:601) > at org.apache.hadoop.util.RunJar.main(RunJar.java:192) -- This message was sent by Atlassian JIRA (v6.2#6252)