You're right. I was thinking there was a hive-ql jar, but there isn't.
(Note that they aren't duplicated in the source tree, just packaged up in
the jar.) I've created https://issues.apache.org/jira/browse/HIVE-4229 to
provide a jar of the ql classes without the upstream classes included.

Note that in the long stream, I think we need to simplify the jars, but
that is a bigger issue.

-- Owen


On Mon, Mar 25, 2013 at 3:23 PM, Dave Winterbourne <
dave.winterbou...@gmail.com> wrote:

> We have a custom User Defined Function that extends UDF - I'll admit some
> ignorance, as I inherited this code, but UDF is a class that comes from
> hive-exec, so it doesn't seem true that hive-exec is not intended for
> external usage. That having been said, my original question is why there
> are classes from commons-lang that are simply duplicated in the code base.
> This is bad form at best, but causes class collisions and thus duplicate
> class warnings.
>
> On Mon, Mar 25, 2013 at 2:48 PM, Owen O'Malley <omal...@apache.org> wrote:
>
> > Hive-exec isn't meant for external usage. It is the bundled jar of Hive's
> > runtime dependencies that are required for Hive's MapReduce tasks. It
> > consists of :
> >
> > hive-common
> > hive-ql
> > hive-serde
> > hive-shims
> > thrift
> > commons-lang
> > json
> > avro
> > avro-mapred
> > java-ewah
> > javolution
> > protobuf-java
> >
> > -- Owen
> >
> >
> > On Mon, Mar 25, 2013 at 11:42 AM, Dave Winterbourne <
> > dave.winterbou...@gmail.com> wrote:
> >
> > > I have been working on eliminating duplicate class warnings in my maven
> > > build, and in the end discovered that there are two classes from apache
> > > commons-lang that are bundled with hive-exec:
> > >
> > > jar tf hive-0.10.0-bin//lib/hive-exec-0.10.0.jar | grep
> > > org/apache/commons/lang/
> > > org/apache/commons/lang/
> > > org/apache/commons/lang/StringUtils.class
> > > org/apache/commons/lang/WordUtils.class
> > >
> > > Why are these classes bundled with hive as opposed to just using
> > > commons-lang? If there truly is a need for custom functionality, why
> not
> > > put it in a different class to avoid this collision?
> > >
> >
>

Reply via email to