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

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

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • None
    • 0.13.0
    • 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

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

            Dates

              Created:
              Updated:
              Resolved: