You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hive.apache.org by "Jason Dere (JIRA)" <ji...@apache.org> on 2014/03/07 00:46:44 UTC

[jira] [Updated] (HIVE-6495) TableDesc.getDeserializer() should use correct classloader when calling Class.forName()

     [ https://issues.apache.org/jira/browse/HIVE-6495?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Jason Dere updated HIVE-6495:
-----------------------------

    Status: Open  (was: Patch Available)

> TableDesc.getDeserializer() should use correct classloader when calling Class.forName()
> ---------------------------------------------------------------------------------------
>
>                 Key: HIVE-6495
>                 URL: https://issues.apache.org/jira/browse/HIVE-6495
>             Project: Hive
>          Issue Type: Bug
>          Components: Serializers/Deserializers
>            Reporter: Jason Dere
>            Assignee: Jason Dere
>         Attachments: HIVE-6495.1.patch
>
>
> User is getting an error with the following stack trace below.  It looks like when Class.forName() is called, it may not be using the correct class loader (JavaUtils.getClassLoader() is used in other contexts when the loaded jar may be required).
> {noformat}
> FAILED: RuntimeException org.apache.hadoop.hive.ql.metadata.HiveException: Failed with exception java.lang.ClassNotFoundException: my.serde.ColonSerdejava.lang.RuntimeException: java.lang.ClassNotFoundException: my.serde.ColonSerde
>     at org.apache.hadoop.hive.ql.plan.TableDesc.getDeserializerClass(TableDesc.java:68)
>     at org.apache.hadoop.hive.ql.exec.FetchOperator.getRowInspectorFromTable(FetchOperator.java:231)
>     at org.apache.hadoop.hive.ql.exec.FetchOperator.getOutputObjectInspector(FetchOperator.java:608)
>     at org.apache.hadoop.hive.ql.exec.FetchTask.initialize(FetchTask.java:80)
>     at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:497)
>     at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:352)
>     at org.apache.hadoop.hive.ql.Driver.compileInternal(Driver.java:995)
>     at org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:1038)
>     at org.apache.hadoop.hive.ql.Driver.run(Driver.java:931)
>     at org.apache.hadoop.hive.ql.Driver.run(Driver.java:921)
>     at org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:268)
>     at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:220)
>     at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:422)
>     at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:790)
>     at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:684)
>     at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:623)
>     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:606)
>     at org.apache.hadoop.util.RunJar.main(RunJar.java:212)
> Caused by: java.lang.ClassNotFoundException: my.serde.ColonSerde
>     at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
>     at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
>     at java.security.AccessController.doPrivileged(Native Method)
>     at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
>     at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
>     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
>     at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
>     at java.lang.Class.forName0(Native Method)
>     at java.lang.Class.forName(Class.java:190)
>     at org.apache.hadoop.hive.ql.plan.TableDesc.getDeserializerClass(TableDesc.java:66)
>     ... 20 more
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.2#6252)