[ 
https://issues.apache.org/jira/browse/HIVE-487?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12734749#action_12734749
 ] 

Todd Lipcon commented on HIVE-487:
----------------------------------

A couple thoughts:

- Does the same compiled jar truly work in all versions of Hadoop between 0.17 
and 0.19? That is to say, can we consider an option in which we use some 
build.xml rules to, depending on the value of a hadoop.version variable, swap 
between two implementations of the same .java file (one compatible with Jetty 
5, one with Jetty 6)? Then in the build product we could simply include two 
jars and have the wrapper scripts swap between them based on version. If size 
is a concern, the variant classes could be put in their own jar that would only 
be a few KB.

- The reflection code in this patch is pretty messy. I mocked up an idea for a 
slightly cleaner way to do it, and will attach it as a tarball momentarily. The 
idea is to define our own interfaces which have the same methods as we need to 
use in Jetty, and use a dynamic proxy to forward those invocations through to 
the actual implementation class. Dynamically choosing between the two 
interfaces is simple at runtime by simply checking that the method signatures 
correspond. This is still dirty (and a bad role model for CS students ;-) ) but 
it should reduce the number of Class.forName and .getMethod calls in the 
wrapper class

> Hive does not compile with Hadoop 0.20.0
> ----------------------------------------
>
>                 Key: HIVE-487
>                 URL: https://issues.apache.org/jira/browse/HIVE-487
>             Project: Hadoop Hive
>          Issue Type: Bug
>    Affects Versions: 0.3.0
>            Reporter: Aaron Kimball
>            Assignee: Justin Lynn
>             Fix For: 0.4.0
>
>         Attachments: HIVE-487-2.patch, hive-487-jetty-2.diff, 
> hive-487-jetty.patch, hive-487.3.patch, hive-487.4.patch, HIVE-487.patch, 
> jetty-patch.patch, junit-patch1.html
>
>
> Attempting to compile Hive with Hadoop 0.20.0 fails:
> aa...@jargon:~/src/ext/svn/hive-0.3.0$ ant -Dhadoop.version=0.20.0 package
> (several lines elided)
> compile:
>      [echo] Compiling: hive
>     [javac] Compiling 261 source files to 
> /home/aaron/src/ext/svn/hive-0.3.0/build/ql/classes
>     [javac] 
> /home/aaron/src/ext/svn/hive-0.3.0/build/ql/java/org/apache/hadoop/hive/ql/exec/ExecDriver.java:94:
>  cannot find symbol
>     [javac] symbol  : method getCommandLineConfig()
>     [javac] location: class org.apache.hadoop.mapred.JobClient
>     [javac]       Configuration commandConf = 
> JobClient.getCommandLineConfig();
>     [javac]                                            ^
>     [javac] 
> /home/aaron/src/ext/svn/hive-0.3.0/build/ql/java/org/apache/hadoop/hive/ql/io/HiveInputFormat.java:241:
>  cannot find symbol
>     [javac] symbol  : method validateInput(org.apache.hadoop.mapred.JobConf)
>     [javac] location: interface org.apache.hadoop.mapred.InputFormat
>     [javac]       inputFormat.validateInput(newjob);
>     [javac]                  ^
>     [javac] Note: Some input files use or override a deprecated API.
>     [javac] Note: Recompile with -Xlint:deprecation for details.
>     [javac] Note: Some input files use unchecked or unsafe operations.
>     [javac] Note: Recompile with -Xlint:unchecked for details.
>     [javac] 2 errors
> BUILD FAILED
> /home/aaron/src/ext/svn/hive-0.3.0/build.xml:145: The following error 
> occurred while executing this line:
> /home/aaron/src/ext/svn/hive-0.3.0/ql/build.xml:135: Compile failed; see the 
> compiler error output for details.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to