Uploaded image for project: 'Hive'
  1. Hive
  2. HIVE-6495

TableDesc.getDeserializer() should use correct classloader when calling Class.forName()

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 0.13.0
    • Labels:
      None

      Description

      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).

      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
      

        Attachments

        1. HIVE-6495.1.patch
          1.0 kB
          Jason Dere
        2. HIVE-6495.2.patch
          1.0 kB
          Jason Dere

          Activity

            People

            • Assignee:
              jdere Jason Dere
              Reporter:
              jdere Jason Dere
            • Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: