thanks guys for the clarification.  i'll work on perhaps finding the source
code and re-implementing if i can.  good to know.



On Wed, Oct 25, 2017 at 6:32 PM, Owen O'Malley <[email protected]>
wrote:

> I considered that, but it won't work.
>
> The Hive 2.2 code looks like:
>
> public interface SerDe { ... }
> public abstract class AbstractSerDe implements SerDe { ... }
>
> ... a lot of code using SerDe ...
>
> The Hive 2.3 code looks like:
>
> public abstract class AbstractSerDe { .... }
>
> ... a lot of code using AbstractSerDe ...
>
> You could create a SerDe interface to avoid the ClassNotFound exception,
> but I assume the external classes do:
>
> public FooSerDe implements SerDe { ... }
>
> when Hive 2.3 tries to use the instance as an AbstractSerDe, it will fail.
>
> With SerDe being an interface and AbstractSerDe being an abstract class,
> we also can't play games with inverting the class hierarchy.
>
> .. Owen
>
> On Wed, Oct 25, 2017 at 4:38 PM, Matt Burgess <[email protected]> wrote:
>
>> Perhaps a fourth option is a “bridge” JAR, to implement the original
>> class by subclassing AbstractSerDe, unless the API has changed such that
>> such a mapping cannot be done.
>>
>> Regards,
>> Matt
>>
>>
>>
>> On Oct 25, 2017, at 7:31 PM, Owen O'Malley <[email protected]>
>> wrote:
>>
>>
>> On Wed, Oct 25, 2017 at 3:20 PM, Stephen Sprague <[email protected]>
>> wrote:
>>
>>> i see. interesting.  i think this breaks a ton of opensource Serde's
>>> we've all downloaded off the internet and have been using for years.  openx
>>> json serde and ibm xml serde come to mind. does this change render all
>>> these incompatible now with 2.3.0?
>>>
>>
>> Unfortunately, yes. With Hive 2.2.0, the SerDe class is still there. It
>> was removed in 2.3.0. I suspect the developer didn't realize there were
>> plugins that would break.
>>
>>
>>>
>>> I mean all i done in the past is download the jar file and put it in the
>>> lib (or auxlib) dir and i was good to go.  That clearly isn't going to fly
>>> anymore then.
>>>
>>> hmmm.  again i'm not a java weenie so rewriting java code isn't
>>> something i would be proficient at. But it sounds like from a devops
>>> standpoint there's no magic jar i can put in the class path to make these
>>> work?  that kinda is a deal-breaker to upgrade then.
>>>
>>
>> Unfortunately, not. Looking at the change, the code now requires the
>> user's serde to implement AbstractSerDe. If it doesn't, it will break.
>>
>> Effectively, the choices seem to be:
>>
>>    1. Change the plugin and recompile it.
>>    2. Upgrade to Hive 2.2 instead of 2.3.
>>    3. Make a case for reverting the change. I'm not sure what the
>>    original motivation of the change was. It seems like it was effectively a
>>    clean up.
>>
>> .. Owen
>>
>>
>>> Am i interpreting this correctly?
>>>
>>> On Wed, Oct 25, 2017 at 2:31 PM, Owen O'Malley <[email protected]>
>>> wrote:
>>>
>>>> SerDe was removed by https://issues.apache.org/jira/browse/HIVE-15167
>>>>
>>>> You should use AbstractSerDe instead.
>>>>
>>>> .. Owen
>>>>
>>>> On Oct 25, 2017, at 2:18 PM, Stephen Sprague <[email protected]>
>>>> wrote:
>>>>
>>>> hey guys,
>>>>
>>>> could be a dumb question but not being a java type of guy i'm not quite
>>>> sure about it. I'm upgrading from 2.1.0 to 2.3.0 and encountering this
>>>> error:
>>>>
>>>> class not found: org/apache/hadoop/hive/serde2/SerDe
>>>>
>>>> so in hive 2.1.0 i see it in this jar:
>>>>
>>>> * hive-serde-2.1.0.jar
>>>> org/apache/hadoop/hive/serde2/SerDe.class
>>>>
>>>>
>>>> but in hive 2.3.0 i don't see it in hive-serde-2.3.0.jar.
>>>>
>>>>
>>>> so i ask where did it go in version 2.3.0?
>>>>
>>>> thanks,
>>>> Stephen
>>>>
>>>>
>>>>
>>>
>>
>

Reply via email to